python3 부터는 ANSI 기준으로 작성된 파일만 읽기 가능

 UTF-8로 된 파일 읽을 시 아래와 같은 에러 발생

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

 이런 경우 파일의 인코딩 형식을 변환 해야 한다.

 

첫번째 방법, 리눅스에서 변경하기


블로그에 iconv 에 대한 설명이 있습니다. (http://amornatura.tistory.com/42)
그냥 UTF-8에서 cp949(ANSI)로 파일을 변환하면 되기 때문에 다음과 같이 입력해줍니다.

$iconv -f UTF-8 -t CP949 -o rename.txt original.txt

 

 

두번째 방법, 파이썬3 에서 읽어오기

파이썬3 에서 직접 UTF-8 문서를 읽어올 수 있습니다. 자세한 내용은 다음의 링크를 참조.
(http://www.evanjones.ca/python-utf8.html)

위의 사이트에서 설명해주는 내용을 따라하면,

import codecs
fileObj = codecs.open( "read.txt", "r", "utf-8" )
u = fileObj.readlines()

for i in u :

print(i)
print("\n")


codecs 라는 라이브러리를 불러와서 파일의 형식을 지정해준 후 읽어옵니다.

 읽을 때 read()로 하면 한글자씩, readlines()하면 단위줄로 읽어오죠.

 

+ Recent posts