Python/인코딩(encoding) 3

UnicodeDecodeError: 'ascii' codec can't decode byte 0xHH in position Z: ordinal not in range(128) 오류원인은 번역하려는 바이트 값이 128~255 라서이다.

ASCII는, HEX 0x00 ~ 0x7F (== DEC 0 ~ 127) 범위에서만 정의되었다. 그런데 바이트 0x80~0xFF (== DEC 128 ~ 255)를 코덱에 따라 번역하라고 하니, 오류가 나는 것이다. 이 오류가 뜨면, 다른 코덱 쓰면 해결된다. 한국어면 utf-8, cp949, utf-16 순으로 해보고, 영어권이면 적절한 다른 코덱들 쓰면 된다. 오류나는 바이트 값들은 접은글에 넣어뒀다. 더보기 0x80 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8A 0x8B 0x8C 0x8D 0x8E 0x8F 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9A 0x9B 0x9C 0x9D 0x9E 0x9F 0xA0 ..

한국어 인코딩 과정에서 나오는 주요 Unicode Decode Error 목록

내가 이 문제로 골머리를 좀 앓는다. 나 포함 Unicode Decode Error 와 다투는 많은 이들을 위해 도움이 되었으면 좋겠다. 1. 들어가기에 앞서, position number를 이해한다. byte_data = b'\x00\x01\x02\x03\x04 ... \0xFF' 라는 예시를 들겠다. 인코딩 오류를 볼때 아래의 개념을 쓴다. in position 0 == 0번째 위치 == 바이트값 \x00 in position 1 == 1번째 위치 == 바이트값 \x01 in position 2 == 2번째 위치 == 바이트값 \x01 in position 255 == 255번째 위치 == 바이트값 \xFF 실제 텍스트 데이터는 이보다 복잡하게 나올 것이다만. 바이트, 인코딩, 유니코드 사이의 관계 ..

파이썬 인코딩 문제 (해결함): 주요 코덱들(utf8, cp949, utf16)을 다 집어넣어 보기

한국어 처리할 때 제일 골치아픈 것은 인코딩 문제이다. 특히 UnicodeDecodeError 이거는 시도때도 없이 튀어나와서 사람 애먹인다. 처음에는 utf-8 에러가 뜨길래, cp949로 바꿨다. 그랬더니 다른 문서에서 에러가 뜨길래 utf-16을 써봤으나 별 도움이 안 되었다. 에러의 대표적인 예시: 'utf-8' codec can't decode byte 0xbe in position 0: invalid start byte UTF-16 stream does not start with BOM 'cp949' codec can't decode byte 0xbf in position 2: illegal multibyte sequence 전제: (txt 파일 read 로 불러올 때) with open (f..