본문 바로가기

IT관련

유니코드 에러 UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position : illegal multibyte sequence

텍스트(Text) 파일을 읽어서 처리하는 어떤 프로그램을 실행시키면서 아래와 같은 에러를 만나는 경우가 있습니다.

Unicode, Encode/Decode, cp949, multibyte 이런 얘기가 나오면 십중팔구 캐릭터셋 문제입니다.

 

 

우리는 단순하게 파일에는 2가지 종류가 있다고 생각합니다.

 

          1) Binary       : 특정 프로그램에서만 읽을 수 있는 포맷

          2) Ascii(Text)  : 아무 에디터에서나 읽을 수 있는 포맷

 

ㅎㅎ 하지만 Text 파일에도 종류가 있습니다.

바로 문자셋(캐릭터셋, Characterset) 때문에 여러종류로 나뉘어집니다.

 

일반적으로 범용적으로 많이 사용하는 에디터 프로그램들, 즉, Ultraedit, Acroedit, Notepad, Word 등의 경우에는 이런 다양한 캐릭터셋의 텍스트 파일을 읽을 수 있도록 내부적으로 처리해주기 때문에 에러가 나지 않습니다.

 

하지만, 이런 캐릭터셋 처리를 해주지 않는 프로그램에서 텍스트파일을 읽는 경우에는 위와 같이 에러가 나는 경우가 생깁니다.

 

이때, 간단하게 조치할 수 있는 방법은 내가 직접 해당 텍스트파일의 캐릭터셋을 바꿔주는 것입니다.

캐릭터셋 바꿔주는 다양한 프로그램이 있는데, 여기에서는 Acroedit 에디터를 이용해서 바꿔보겠습니다.

 

 

 

텍스트 파일을 읽으면 Acroedit 툴에서는 아래 상태바에 어떤 캐릭터셋으로 된 파일인지 정보를 표시해줍니다.

U8-xxxx 는 유니코드 UTF8 형태로 되어 있다는 것입니다.

이것을 ANSI 코드 형태로 바꿔보겠습니다.

 

[파일] - [변환] - [ANSI] 메뉴를 클릭하면 현재 파일의 캐릭터셋을 변경해줍니다.

 

 

 

변경해주면 아래 처럼 화면하단에 ANSI-xxx 로 바뀌어 있는 것을 확인할 수 있습니다.

이대로 저장하면 완전히 바뀌게 됩니다.

 

 

이런식으로 텍스트파일의 캐릭터셋을 바꿔서 이 파일을 로딩하는 프로그램을 다시 실행시켜보면 에러가 더이상 발생하지 않는것을 확인할 수 있습니다.