깨진 이름은 생김새에 원인이 그대로 드러납니다. 아래 표의 예시는 모두 「한글」 두 글자를 실제로 해당 방식대로 저장하고 잘못 읽어 만든 것입니다. 내 화면의 깨진 이름과 가장 닮은 줄을 찾아보세요.
한눈에 보는 표
| 생김새 | 원인 | 되돌리기 |
|---|---|---|
ㅎㅏㄴㄱㅡㄹ | 맥의 자소 분리(NFD) 이름을 윈도우가 낱자로 그림 | 완전히 가능 |
ㅎㅏㄴㄱㅡㄹ (복사해 보면 ㄱ·ㅏ 가 따로따로) | 어떤 프로그램이 조각을 호환 자모로 바꿔 저장 | 대부분 가능 |
�븳湲� · �꼺�뀫�넫… | UTF-8 이름을 CP949 로 읽음(맥 ZIP 을 한국어 윈도우에서) | ZIP 이면 완전히, 글자만 있으면 일부 |
한글 | UTF-8 이름을 Windows-1252(서유럽)로 읽음 | 완전히 가능 |
φò£Ω╕Ç | UTF-8 이름을 CP437(영문 DOS)로 읽음 | 완전히 가능 |
ÇÑ±Û | CP949 이름을 Windows-1252·Latin-1 로 읽음 | 완전히 가능 |
╟╤▒█ | CP949 이름을 CP437 로 읽음(한국어 윈도우 ZIP 을 영문 환경에서) | 완전히 가능 |
?? · □□ · __ | 읽는 쪽이 모르는 글자를 물음표·네모·밑줄로 바꿔서 저장 | 불가능 |
도구의 「글자 복구」 탭 에 깨진 이름을 붙여 넣으면 위 경로를 모두 시도해 가장 그럴듯한 원래 이름을 보여 줍니다.
1. 자소 분리 — ㅎㅏㄴㄱㅡㄹ
가장 흔한 경우입니다. 맥은 한글 이름을 초성·중성·종성 조각(NFD)으로 저장하는 일이 많고, 윈도우 탐색기는 그 조각을 한 글자로 모으지 못해 낱자로 늘어놓습니다. 글자가 바뀐 것이 아니라 적는 방식만 다르므로 NFC 로 정규화하면 손실 없이 돌아옵니다. 원리는 NFC 와 NFD 에서 설명했습니다.
비슷하지만 다른 경우 — 호환 자모 나열
같은 「ㅎㅏㄴㄱㅡㄹ」이라도 복사해 메모장에 붙였을 때 정규화해도 그대로라면, 조각이 아니라 호환 자모(키보드로 ㅎ 하나만 쳤을 때 나오는 글자, U+3131~)로 저장된 것입니다. 일부 변환 프로그램이 조각을 이렇게 바꿔 버립니다. 정규화로는 안 돌아오고, 한글 입력기처럼 초성·중성·종성을 다시 짜 맞춰야 합니다. 도구의 「낱자 나열(ㅎㅏㄴ)도 합치기」가 이 일을 합니다. 「ㅋㅋㅋ」처럼 자음만 있는 곳은 일부러 쓴 것으로 보고 건드리지 않습니다.
2. 한자와 이상한 한글이 섞임 — UTF-8 을 CP949 로
맥이나 리눅스에서 UTF-8 로 적은 이름을 한국어 윈도우가 CP949 로 읽은 경우입니다. 한글 한 글자가 UTF-8 로 3바이트인데 CP949 는 2바이트씩 끊어 읽으니, 글자 경계가 어긋나 한자와 낯선 한글이 섞여 나옵니다.
- 완성형 이름이면: 「최종 보고서」 →
理쒖쥌 蹂닿퀬�꽌 - 자소 분리 이름이면(맥 ZIP 의 전형): 「최종 보고서」 →
�꼶�뀶�꼳�뀳�녅 …— 조각 바이트가 「꼪·뀳」 같은 글자로 되풀이됩니다.
끊어 읽다 남은 바이트는 읽는 순간 버려지거나 물음표로 바뀌는 일이 많습니다. 그래서 화면에 보이는 글자만으로는 완전히 되돌리지 못할 수 있습니다. 깨진 이름이 ZIP 안에 있다면 원래 바이트가 그대로 남아 있으니 ZIP 복구 탭 을 쓰세요. 원리는 맥 ZIP 이 깨지는 이유 에 있습니다.
3. 악센트 붙은 라틴 문자 — UTF-8 을 Windows-1252 로
한글 처럼 í ê € œ 같은 서유럽 글자가 보이면, UTF-8 이름을 서유럽 글자표(Windows-1252)로 읽은 것입니다. 영문 환경의 메일 프로그램이나 오래된 웹 서비스에서 자주 보입니다. 1바이트를 1글자로 읽었기 때문에 바이트가 하나도 버려지지 않아 완전히 되돌릴 수 있습니다.
4. 그리스 문자·선 그림 — UTF-8 을 CP437 로
φò£Ω╕Ç 처럼 그리스 문자(φ Ω), 수학 기호, ╕ 같은 선 문자가 섞이면 DOS 시절 영문 글자표 CP437 로 읽은 것입니다. ZIP 명세가 원래 정한 기본 글자표라서, UTF-8 표시가 없는 ZIP 을 영문 윈도우나 일부 압축 프로그램이 열 때 이렇게 나옵니다. 역시 1바이트=1글자라 완전히 되돌릴 수 있습니다.
5. ÇÑ±Û — CP949 를 서유럽 글자표로
반대 방향입니다. 한국어 윈도우가 CP949 로 적은 이름을 서유럽 글자표로 읽으면 ÇÑ±Û 처럼 짧은 라틴 문자 묶음이 됩니다. 한글 한 글자가 CP949 로 2바이트라 깨진 글자 수가 원래의 두 배쯤 됩니다. 완전히 되돌릴 수 있습니다.
6. ╟╤▒█ — CP949 를 CP437 로
한국어 윈도우에서 만든 ZIP(이름이 CP949)을 영문 윈도우나 CP437 로 읽는 프로그램에서 열면 ╟╤▒█ 처럼 선 그림 문자가 이어집니다. 완전히 되돌릴 수 있습니다. ZIP 이면 ZIP 복구 탭에서 「원래 이름 해석」을 CP949 로 고르면 바로 고쳐집니다.
7. 물음표·네모 — 되돌릴 수 없는 경우
??.txt 처럼 물음표만 남았다면 읽은 쪽이 모르는 글자를 물음표로 바꿔서 저장한 것입니다. 원래 바이트가 사라져 어떤 도구로도 되살릴 수 없습니다. 화면에만 네모(□)로 보이는 것은 다른 문제일 수 있습니다 — 글꼴에 그 글자가 없을 뿐 이름은 멀쩡할 수 있으니, 이름을 복사해 다른 곳에 붙여 보세요.
두 번 깨진 이름
깨진 이름을 다른 프로그램이 또 잘못 읽으면 두 단계가 겹칩니다. 예를 들어 ÃÂ 가 잔뜩 보이면 UTF-8 → Windows-1252 깨짐이 두 번 일어난 것일 수 있습니다. 「글자 복구」 결과를 다시 붙여 넣으면 한 단계씩 풀립니다.
직접 확인해 보는 법
깨진 이름의 바이트를 보면 원인이 확실해집니다. 파이썬이 있다면:
name = "한글"
print(name.encode("cp1252").decode("utf-8")) # 한글encode 에는 「잘못 읽은 글자표」를, decode 에는 「원래 글자표」를 넣는 것이 요령입니다. 도구의 「글자 복구」는 이 조합을 자동으로 모두 시도합니다.