본문 바로가기
파이썬 데이터분석

파이썬 파일 읽을 때 나오는 에러 - UnicodeDecodeError: 'cp949' codec can't decode byte 0xed in position 6: illegal multibyte sequence

by 데이터스토리 2023. 11. 12.
반응형

cp949 인코딩이 필요한 코딩

infile = open("연설문.txt", "r")
outfile = open("optput.txt", "w")

 

파일 내용을 읽어 들여서 출력하려고 한다. 변수 infile에 파일을 오픈하여 데이터를 넣었다.

 

파일의 데이터를 인쇄하려한다.

word_dic = {}
total_count = 0

for line in infile:
    line = line.rstrip()
    print(line)

 

에러가 나온다. 실행 후 나오는 메세지다.

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
Input In [12], in <cell line: 4>()
      1 word_dic = {}
      2 total_count = 0
----> 4 for line in infile:
      5     line = line.rstrip()
      6     print(line)

UnicodeDecodeError: 'cp949' codec can't decode byte 0xed in position 6: illegal multibyte sequence

 

 

에러메세지는,

UnicodeDecodeError: 'cp949' codec can't decode byte 0xed in position 6: illegal multibyte sequence

 

이유는 "연설문.txt" 파일이 cp949 로 인코딩 되었기 때문이다. 그래서 "연설문.txt" 파일을 읽을 때 encoding 옵션에 "cp949"를 적용해 주어야 한다.

 

반응형

 

 

수정된 코드

infile = open("연설문.txt", "r", encoding='utf-8')

word_dic = {}
total_count = 0

cnt = 0

for line in infile:
    cnt = cnt + 1
    line = line.rstrip()

 

결과는 아래와 같이 나왔다. 원하는 결과다.

실행 결과 화면, 쥬피터 노트북 화면

 


파이썬
클릭 하시면 해당 링크로 이동합니다

 

인코딩이란 무엇인가? 

인코딩이란 인간의 문자를 컴퓨터가 알 수 있도록 변환한 것이다. 컴퓨터는 0과 1의 이진법의 코드로 된 데이터로 정보를 관리한다. 숫자든 문자든 '1011001111001'로 저장된다. 한글 인토딩 방식으로 가장 많이 사용되는 것은 UTF-8과 cp949 이다. 

인코딩의 반대가 디코딩이다. 인코딩된 파일을 읽을 때 인코딩 방식을 정의해 주어야 출력되는 결과가 우리가 보는 한글 문자가 된다.

반응형