Python/인코딩(encoding)

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

공시탈출넘버원 2023. 9. 19. 00:39

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 0xA1 0xA2 0xA3 0xA4 0xA5 0xA6 0xA7 0xA8 0xA9 0xAA 0xAB 0xAC 0xAD 0xAE 0xAF 0xB0 0xB1 0xB2 0xB3 0xB4 0xB5 0xB6 0xB7 0xB8 0xB9 0xBA 0xBB 0xBC 0xBD 0xBE 0xBF 0xC0 0xC1 0xC2 0xC3 0xC4 0xC5 0xC6 0xC7 0xC8 0xC9 0xCA 0xCB 0xCC 0xCD 0xCE 0xCF 0xD0 0xD1 0xD2 0xD3 0xD4 0xD5 0xD6 0xD7 0xD8 0xD9 0xDA 0xDB 0xDC 0xDD 0xDE 0xDF 0xE0 0xE1 0xE2 0xE3 0xE4 0xE5 0xE6 0xE7 0xE8 0xE9 0xEA 0xEB 0xEC 0xED 0xEE 0xEF 0xF0 0xF1 0xF2 0xF3 0xF4 0xF5 0xF6 0xF7 0xF8 0xF9 0xFA 0xFB 0xFC 0xFD 0xFE 0xFF


ASCII defined only in  HEX 0x00 ~ 0x7F

If you order computer to decode byte 0x80~0xFF, then there is no decode dataset for ASCII.

That's why this error comes out.

 

Solution: USE Differenct codecs. It depends on your country. Try with utf-8 first.