UnicodeDecodeError: 'cp949' codec can't decode bytes in position : illegal multibyte sequence
에러 대처법
파이썬 3.x 부터는 utf-8로 작성된 문서는 default로 읽지 못하는 것으로 보인다. 2가지 방법이 존재하게 되는데 하나는 파일을 utf-8로 저장하지 않으면 되는 것이고, 2번째 방법은 소스에 약간 손을 대면 된다.
1. AS-IS 에러 발생 코드
f = open("it_title.txt", "r")
while True:
line = f.readline()
print(line)
if not line: break
f.close()
UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 14: illegal multibyte sequence
2. To-Be_A
구글링 해서 약간을 손본 코드, open 펑션에 "utf-8"을 추가하면 된다고 해서...
f = open("it_title.txt", "r", "utf-8")
while True:
line = f.readline()
print(line)
if not line: break
f.close()
이렇게 수정했으나, 역시 에러가 발생하였다.
TypeError: an integer is required (got type str)
f = open("it_title.txt", "r", encoding="utf-8")
while True:
line = f.readline()
print(line)
if not line: break
f.close()
이렇게 캐릭터셋만 넣으면 안되고 encoding이라고 명시를 해줘야 한다.
To-Be_B
보다 쉬운 방법은 import로 codecs라는 라이브러리를 추가를 하는 방법이다.
import codecs
f = codecs.open("it_title.txt", "r", "utf-8")
while True:
line = f.readline()
print(line)
if not line: break
f.close()
위와 같이 수정한 후, 소스는 정상적으로 잘 나오는 것을 확인했다.
파이썬이 편리한 면도 분명있지만, 비상식적인 업데이트 같은 부분은 이해가 안되는 측면이 있다.ex) 2.x 소스를 3.x에서 실행하면 안되는 문제 등...
반응형
'Stackoverflow > Python' 카테고리의 다른 글
pip 버전 업그레이드 방법 (0) | 2020.06.11 |
---|---|
[MacOS] xcrun: error: invalid active developer path... (1) | 2020.04.26 |
python, pip dlib install 에러 해결 (0) | 2020.03.12 |
케라스(Keras), KeyError: 'acc' (3) | 2019.11.20 |
RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb (0) | 2018.08.21 |