본문 바로가기

캐릭터셋

프로그램 에러정보 'utf-8' codec can't decode byte 0xbb in position : invalid start byte Text 파일을 읽어서 처리하는 어떤 응용 프로그램에서 아래와 같은 에러가 발생하는 경우가 있습니다. 'utf-8' codec can't decode byte 0xbb in position 5526: invalid start byte 이건 해당 프로그램에서 텍스트 파일을 읽는 과정에서 캐릭터셋 인코딩 처리를 제대로 안했을 때 발생합니다. 이 문제를 해결하는 방법은 해당 프로그램을 개발자가 고치면 됩니다. ㅎㅎ 하지만 이게 여의치 않은 경우에는 프로그램에서 읽어들이는 텍스트파일의 인코딩을 바꿔주는 방법도 있습니다. 텍스트파일 인코딩 바꿔주는 방법이 생각보다 어렵지 않습니다. 왠만한 에디터 프로그램들이 이런 것을 지원하거든요. 저는 AcroEdit 를 가지고 변환해보겠습니다. AcroEdit 에서 Text .. 더보기
유니코드 에러 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 등의 경우에는 이런 다양한 캐릭터셋.. 더보기
오라클 utl_file.get_line() 한글 텍스트 제대로 못 읽는 경우 - 한글깨짐, 캐릭터셋 문제 Oracle DB 의 PL/SQL 프로그램에서 utl_file.get_line() 함수로 텍스트를 한줄씩 읽는 경우 제대로 안읽히는 경우가 있습니다. 한글이 깨지거나 여러줄이 한꺼번에 읽히는 문제가 있습니다. 이것은 DB의 캐릭터셋(Characterset) 환경과 Text 파일의 문자코드가 맞지 않아서 발생하는 현상입니다. 아래와 같이 간단한 PL/SQL 프로그램을 이용해서 테스트 해보겠습니다. set serveroutput on declare f utl_file.file_type; ldir varchar2(100) := 'DATA_PUMP_DIR'; lfile varchar2(100) := 'readfile.txt'; v_line varchar2(2000); begin f := utl_file.fope.. 더보기