반응형
오류 개요
파이썬에서 txt나 json 파일을 read/write 하는 과정에서 다음과 같은 오류가 발생하였습니다.
UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 122: illegal multibyte sequence
참고로, 해당 코드는 리눅스 체제에서는 정상 작동되었는데,
에러가 발생한 운영체제 환경은 윈도우였고, 한국어 세팅이었습니다.
오류 원인
한국어 환경에서의 인코딩은 'cp949'로 지정이 된 경우가 많은데,
유니코드('utf-8') 등 다른 인코딩 방법으로 인코딩된 파일을 다루는 경우,
인코딩 버전 불일치로 인하여 해당 에러가 발생할 수 있습니다.
오류 해결법
파일을 다루는 과정에서 encoding 방법을 명시적으로 지정해주시면 해결이 쉽게 가능합니다.
with open('my_file.txt', 'r', encoding='utf-8') as f:
data = f.read()
만일, 인코딩 방법을 직접 찾기 어려운 경우에는 chardet 라이브러리를 활용하여
인코딩 방법을 찾은 뒤에, 명시적으로 지정을 해주시면 됩니다.
import chardet # 설치 필요 시 !pip install chardet
with open('my_file.txt', 'rb') as f:
result = chardet.detect(f.read())
file_encoding = result['encoding']
with open('my_file.txt', 'r', encoding=file_encoding) as f:
data = f.read()
'Python > Debugging' 카테고리의 다른 글
JSONDecodeError: Expecting value: line 2 column 7 (char 8) / Expecting ',' delimiter 원인 및 해결법 (0) | 2023.09.23 |
---|---|
onnxruntime GPU 인식이 안되는 경우 해결 방법 (0) | 2023.09.16 |
TypeError: 'str' object does not support item assignment 해결법 (0) | 2022.10.26 |