개발공부/메모라이즈

[개발메모라이즈] 한글이 깨지는 유형

siotMan 2025. 5. 20. 21:05

인코딩된 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