해결: 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에서 저장된 파일이
CP949
나ISO-8859-1
같은 다른 인코딩인 경우.
input()에서 에러가 발생한 경우라면?
sys import 해와서 stdin reconfigure해보면 됨
import sys
sys.stdin.reconfigure(encoding='cp949') # 예: CP949 인코딩 설정
user_input = input("Enter something: ")
print(user_input)
빠른 해결책
- 인코딩 확인부터 하자→ Linux/Mac이라면 이 명령어로 파일 인코딩 확인. 만약
utf-8
아니라면 문제 찾은 거임. file -i <파일명>
- 열 때 인코딩 지정하기→ 파일 인코딩 맞춰주고 다시 열어봐.
cp949
,latin1
이런 거 한 번씩 넣어보면 됨. with open('yourfile.txt', 'r', encoding='cp949') as f: data = f.read()
- 인코딩 강제 변환
- 파일 인코딩 바꿔버리기:
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)
- 뭐가 뭔지 모르겠으면→ 결과보고 구글링.
with open('yourfile.txt', 'rb') as f: raw = f.read() print(raw[:10]) # 앞부분 찍어보고 인코딩 감 잡아봐.
기억할 것
- "UTF-8" 아닌 파일은 너만 그런 게 아님. 파일 건넨 사람 원망 말고 그냥 고쳐.
- 매번 똑같은 파일에서 에러 터지면, 기본 인코딩을 제대로 설정하자.
- 이게 기본. 바꿀 수 있으면 바꿔.
import locale print(locale.getpreferredencoding())
그래도 안 되면? 다음 에러 기다리면서 커피나 마셔.
'파이썬 코딩 기록' 카테고리의 다른 글
[파이썬 에러] ModuleNotFoundError: No module named 'blinker._saferef' (0) | 2025.01.16 |
---|---|
[파이썬 에러] ModuleNotFoundError: No module named 'pkg_resources' (0) | 2025.01.16 |
[PyQt/Pyside] QLineEdit placeholder text 넣는법 (0) | 2025.01.16 |
openpyxl 에러 - AttributeError: 'MergedCell' object attribute 'value' is read-only (0) | 2025.01.16 |
[Python] 파이썬 리스트 입력 받기 (예제 코드 포함) (0) | 2024.12.26 |