본문 바로가기
파이썬 코딩 기록

[Python 에러] UnicodeDecodeError 'utf-8' codec can't decode bytes

by 파이썬코딩대학 2025. 1. 20.

해결: UnicodeDecodeError 'utf-8' codec can't decode bytes

에러: UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte

이 에러 본 적 있지? 파일 열다가 뜨는 거

 

원인이 뭐냐고?

  • 파일 인코딩이 UTF-8 아닌데, 코드에서 강제로 UTF-8로 열었을 때 발생.
  • 흔히 Windows에서 저장된 파일이 CP949ISO-8859-1 같은 다른 인코딩인 경우.

[Python 에러] UnicodeDecodeError 'utf-8' codec can't decode bytes

 

input()에서 에러가 발생한 경우라면?

sys import 해와서 stdin reconfigure해보면 됨 

import sys
sys.stdin.reconfigure(encoding='cp949')  # 예: CP949 인코딩 설정
user_input = input("Enter something: ")
print(user_input)

 

빠른 해결책

  1. 인코딩 확인부터 하자→ Linux/Mac이라면 이 명령어로 파일 인코딩 확인. 만약 utf-8 아니라면 문제 찾은 거임.
  2. file -i <파일명>
  3. 열 때 인코딩 지정하기→ 파일 인코딩 맞춰주고 다시 열어봐. cp949, latin1 이런 거 한 번씩 넣어보면 됨.
  4. with open('yourfile.txt', 'r', encoding='cp949') as f: data = f.read()
  5. 인코딩 강제 변환
    • 파일 인코딩 바꿔버리기:
    • iconv -f 기존인코딩 -t utf-8 < 원본파일 > 새파일
    • Python으로 변환:
    • import codecs with codecs.open('yourfile.txt', 'r', 'cp949') as f: content = f.read() with codecs.open('yourfile_utf8.txt', 'w', 'utf-8') as f: f.write(content)
  6. 뭐가 뭔지 모르겠으면→ 결과보고 구글링.
  7. with open('yourfile.txt', 'rb') as f: raw = f.read() print(raw[:10]) # 앞부분 찍어보고 인코딩 감 잡아봐.

기억할 것

  • "UTF-8" 아닌 파일은 너만 그런 게 아님. 파일 건넨 사람 원망 말고 그냥 고쳐.
  • 매번 똑같은 파일에서 에러 터지면, 기본 인코딩을 제대로 설정하자. 
  •  이게 기본. 바꿀 수 있으면 바꿔.
  • import locale print(locale.getpreferredencoding())

그래도 안 되면? 다음 에러 기다리면서 커피나 마셔.