CSV 파일 read시 UnicodeDecodeError 인코딩 오류 대처하기

파이썬으로 csv 파일을 읽어오는데 인코딩 오류 발생했다.

1
2
3
4
5
6
7
import csv

with open('./resource/sample1.csv', 'r') as f:
reader = csv.reader(f)

for c in reader:
print(c)

유니코드 에러 내용:

1
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: invalid start byte

다음과 같은 경우 드물게 발생한다고 한다

  1. EUC-KR과 CP949를 구분하는 경우
  2. EUC-KR만을 지원하는 프로그램에서 CP949로 작성된 텍스트 파일을 여는 경우

쉽게 말해 지금 나의 파이썬 인코딩 설정 환경과 데이터 파일을 인코딩하는 설정 환경이 잘 안맞아서 그렇다는 것!

# 해결방법

오류 관련 서치 중 encoding='CP949' 옵션을 넣어주면 깔끔하게 해결이 된 다는 것을 알게 되었다.

내 코드에 바로 적용해 보면

1
2
3
4
5
6
7
import csv

with open('./resource/sample1.csv', 'r', encoding='CP949') as f:
reader = csv.reader(f)

for c in reader:
print(c)

지정한 csv 파일을 잘 읽어온다!!! 😎🤟🏼

1
2
3
4
5
6
7
8
9
10
11
['번호', '이름', '가입일시', '나이']
['1', '김정수', '2017-01-19 11:30:00', '25']
['2', '박민구', '2017-02-07 10:22:00', '35']
['3', '정순미', '2017-01-22 09:10:00', '33']
['4', '김정현', '2017-02-22 14:09:00', '45']
['5', '홍미진', '2017-04-01 18:00:00', '17']
['6', '김순철', '2017-05-14 22:33:07', '22']
['7', '이동철', '2017-03-01 23:44:45', '27']
['8', '박지숙', '2017-01-11 06:04:18', '30']
['9', '김은미', '2017-02-08 07:44:33', '51']
['10', '장혁철', '2017-12-01 13:01:11', '16']

# 키워드

  • UnicodeDecodeError
  • encoding=’CP949’
Share