인코딩된 charset 을 혼동하여 잘못 디코딩한 경우를 왕왕 보게 된다.
"설정" 이란 문자열을 기준으로 잡으면:
1. EUC-KR(혹은 CP949)를 UTF-8로 디코드: �궭뚥쀍 혹은 ����:
2. UTF-8을 EUC-KR(혹은 CP949)로 디코드: ��ㅼ��
그 유명한 궭뚥쀍은 설정이란 단어가 잘못 디코딩 된 것이다.
�는 “유니코드 대체 문자”(replacement character, U+FFFD) 이므로,
디코드 charset 이 표현할 수 없는 어떤 바이트들이 대체되었다고 이해하면 된다.
파이썬같은 경우, 이 "replace" 동작이 default 가 아니고 "strict" 이다.
즉 주어진 바이트가 "유효시작바이트" 가 아니면 에러가 난다.
같은 인코딩으로 한번 더 인코딩해서 깨지는 경우도 있다.
마찬가지로 "설정" 을 문자열로 기준잡으면:
1. EUC-KR을 한번 더 인코딩하고 디코드: ¨ù©ø?¢´
2. UTF-8을 한번 더 인코딩하고 디코드: ì¤ì
---
이런 인코딩 문제의 경우 어떻게도 중요하겠지만, 어디서가 더 중요한 경우가 많다.
제일 최근에 만진 녀석을 먼저 의심해보자.
'개발공부 > 메모라이즈' 카테고리의 다른 글
[개발메모라이즈] 분시일 변환 (0) | 2025.05.19 |
---|