어제 오늘 내일

[파이썬/Python] UnicodeDecodeError: 'cp949' codec can't decode bytes .. 본문

IT/Python

[파이썬/Python] UnicodeDecodeError: 'cp949' codec can't decode bytes ..

hi.anna 2017. 7. 31. 07:17



[파이썬 / python]

'UnicodeDecodeError: 'cp949' codec can't decode bytes in position~~ ' 

오류 해결 하기





파이썬으로 한글 파일을 읽어오다가 아래와 같은 오류가 발생하였다.

UnicodeDecodeError: 'cp949' codec can't decode bytes in position ~~~



원인을 찾아보니 

읽으려는 파일이 UTF-8 형식이기 때문!

해결하기 위해서는 파일을 읽을 때 인코딩 형식을 지정해 주어야 한다.


파일을 읽을 때 인코딩, 디코딩 방법을 지정해주기 위해서는

codecs 모듈을 이용해야 한다.

아래의 document를 참조하였다.

https://docs.python.org/3/library/codecs.html#module-codecs




codecs 모듈의 open() 사용하여 문제 해결하기

codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1)


codes 모듈의 세번째 인자로 encoding 방법을 지정할 수 있다.



그래서 위와 같이

1. codes 모듈을 import하고

2. codecs.open 함수로 파일을 열어주고, 세 번째 인자로 인코딩 형식을 지정해준다.

(여기서는 utf-8)

3. codecs.open함수는 file변수에 codecs.StreamReaderWriter 타입의 인스턴스를 리턴한다.

4. codecs.StreamReader의 readline 함수를 이용하여 파일을 한줄씩 읽어온다.

(codecs.StreamReaderWriter 인스턴스는 codecs.StreamReader와 codecs.StreamWriter를 구현한 인스턴스이다)


https://docs.python.org/3/library/codecs.html#codecs.open

https://docs.python.org/3/library/codecs.html#codecs.StreamReaderWriter

https://docs.python.org/3/library/codecs.html#codecs.StreamReader

[파이썬 공식 문서 참조]



반응형
Comments