본문 바로가기
IT/파이썬(Python)

파이썬 txt 파일 열기 cp949 UnicodeDecodeError 해결 방법

by 깡타의 컴맹인생 2023. 4. 15.
반응형

txt 파일 cp949 에러 해결 방법

목차
1. 텍스트 파일 인코딩 형식 변환
2. open() 함수에 인코딩 옵션 추가

위의 내용이 적혀있는 텍스트 파일을 파이썬을 활용해 불러오려고 한다.

1
2
3
file = open('test.txt')
content = file.read()
file.close() # 파일을 열었다면 닫아줘야만 프로그램 실행 속도가 빨라진다.
cs
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
Cell In[10], line 2
      1 file = open('test.txt')
----> 2 content = file.read()
      3 file.close() # 파일을 열었다면 닫아줘야만 프로그램 실행 속도가 빨라진다.

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

read() 함수를 이용해 텍스트 파일 안의 내용을 읽으려고 했더니 UnicodeDecodeError가 발생했다. 파이썬이 ANSI 코덱으로 작성되었다고 가정하고 cp949 코덱으로 파일을 여는데 utf-8 코덱으로 인코딩 된 내용이라서 오류가 발생한다. cp949 코덱은 마이크로소프트사에서 도입한 코드 페이지다. 통합형 한글 코드라는 명칭으로 불리고 현대의 모든 한글을 수용한다. 이 문제를 해결할 수 있는 방법은 크게 2가지가 있다.

 

  • ANSI(American National Standards Institute, ANSI)
    다른 언어의 문자를 표현하지 못하는 ASCII의 단점을 보완하기 위해 등장한 문자열 인코딩 방식이다. 언어별로 코드 페이지를 만들어 각각 다른 코드 표를 사용하도록 했다. 이중 한글에 대응되는 인코딩 방식은 euc-kr, cp949다. utf-8을 선택하면 유니코드 코드표에 매핑되고 cp949를 선택하면 ANSI 코드 페이지에 매핑된다.

  • UTF-8(Universal Coded Character Set + Transformation Format - 8bit)
    유니코드를 위한 가변 길이 문자 인코딩 방식 중의 하나. 한 문자를 나타내기 위해 1~4바이트를 사용한다.
  • 유니코드
    전 세계의 모든 문자를 컴퓨터에서 일관되게 사용할 수 있도록 설계된 표준 문자 전산 처리 방식

  • 인코딩(Encoding)
    사용자(사람)가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것(컴퓨터는 0과 1로 저장함)

1. 텍스트 파일 인코딩 형식 변환

텍스트 파일을 열고 다른 이름으로 저장(A)을 선택한다.

 그리고 인코딩 형식을 UTF-8에서 ANSI로 변경해 준다. 파이썬 3부터 read() 함수는 ANSI 인코딩으로 작성된 문서를 읽어 들일 수 있게 세팅되어 있다.

그러고 나서 코드를 실행해 보니 에러가 발생하지 않았다.


2. open() 함수에 인코딩 옵션 추가

다른 한 가지의 방법은 open() 함수에 옵션으로 encoding = 'utf-8'이라는 코드를 입력하는 것이다. 이렇게 하면 cp949 인코딩 방식이 아닌 utf-8 인코딩으로 파일을 열 수 있다.

1
2
3
4
file = open('test.txt', encoding = 'utf-8')
content = file.read()
print(content)
file.close() # 파일을 열었다면 닫아줘야만 프로그램 실행 속도가 빨라진다.
cs
안녕하세요.
깡타의 컴맹인생에 오신 것을 환영합니다.
토요일입니다.

문제가 발생하지 않는다.

반응형