깨진 한글 복구
CSV·메일·자막·압축 파일 이름에서 안녕하세요나 ¾È³çÇϼ¼¿ä처럼 깨진 글을 붙여 넣으면 어떤 인코딩이 어긋났는지 알아내 원래 한글로 되돌립니다.
맥에서 압축해 윈도우에서 풀면 생기는 ㅎㅏㄴㄱㅡㄹ(자소 분리)과 안녕·안 같은 이스케이프도 함께 풉니다. 입력한 글은 서버로 전송되지 않고 브라우저 안에서만 처리합니다.
글을 붙여 넣으면 결과가 바로 표시됩니다.
다른 가능한 해석
한글이 깨지는 원리
글자는 파일에 바이트로 저장되고, 읽는 쪽이 어떤 문자 인코딩(UTF-8·EUC-KR·Latin-1)으로 해석하느냐에 따라 다른 글자가 됩니다. 저장할 때와 읽을 때 인코딩이 다르면 엉뚱한 글자가 나오는데, 이것을 모지바케(文字化け)라고 합니다. 바이트가 남아 있으면 반대로 해석해서 되돌릴 수 있고, 이 도구가 하는 일이 그것입니다.
| 깨진 모습 | 원인 | 흔한 상황 | 복구 |
|---|---|---|---|
안녕 | UTF-8 바이트를 Latin-1(Windows-1252)로 읽음 | 엑셀로 UTF-8 CSV 열기, 메일 제목, 외국 서버 DB | 가능 |
¾È³ç | EUC-KR(CP949) 바이트를 Latin-1로 읽음 | 옛 한국 사이트·자막(smi)을 외국 프로그램으로 열기 | 가능 |
안 | UTF-8 → Latin-1 두 번 겹쳐 깨짐 | 깨진 글을 다시 UTF-8로 저장 | 가능 |
占쏙옙 ????? � | UTF-8을 EUC-KR로 읽거나, 없는 글자를 ?로 바꿔 저장 | 윈도우 메모장·구형 DB에 저장 | 불가능 (바이트가 사라짐) |
ㅎㅏㄴㄱㅡㄹ | macOS가 파일 이름을 NFD(자소 분리)로 저장 | 맥 zip을 윈도우에서 풀기, 구글 드라이브 파일 이름 | 가능 (NFC 정규화) |
상황별 근본 해결
- 엑셀에서 CSV 한글 깨짐: 파일을 "UTF-8 BOM"으로 저장하거나 엑셀의 "데이터 → 텍스트/CSV 가져오기"에서 원본 파일 인코딩을 65001(UTF-8)로 고르세요. 엑셀·CSV 변환기는 BOM을 자동으로 붙입니다.
- 맥 → 윈도우 압축 파일: 맥에서 터미널
zip -r대신 "반디집"처럼 NFC로 저장하는 프로그램을 쓰거나, 윈도우에서 반디집으로 풀면 이름이 정상으로 보입니다. 이미 받은 파일 이름은 이 도구로 NFC 변환해 바꾸면 됩니다. - 메일 제목이
=?EUC-KR?B?…?=: MIME 인코딩된 제목입니다. 문자열 디코더가 자동으로 풉니다. - DB·서버 설정: MySQL은
utf8mb4, 연결 문자셋도 같게. 자바는-Dfile.encoding=UTF-8, 파이썬은open(..., encoding="utf-8")를 명시하세요. 저장할 때부터 UTF-8이면 깨질 일이 없습니다.
자소 분리(NFD)와 자모 나열의 차이
NFD는 "한"을 초성 ᄒ·중성 ᅡ·종성 ᆫ(조합용 자모, U+1100~)으로 나눠 저장한 것으로, 화면에서는 글자처럼 보이지만 검색·정렬이 어긋나고 일부 프로그램에서 ㅎㅏㄴ처럼 보입니다. 유니코드 NFC 정규화로 완벽하게 합쳐집니다.
자모 나열은 키보드로 친 호환 자모(ㅇ·ㅏ·ㄴ, U+3131~)를 그대로 늘어놓은 것으로 조합 규칙을 적용해 음절로 만듭니다. 받침과 다음 글자 초성이 겹치는 경우(ㅇㅏㄴㄴㅕㅇ)는 두벌식 규칙대로 가장 자연스러운 조합을 고릅니다.
자주 묻는 질문
복구가 안 되고 "복구 불가능"이라고 나와요.
?나 �로 바뀌었거나 占쏙옙처럼 보이면 저장 과정에서 원래 바이트가 이미 버려진 것입니다. 원본 파일을 UTF-8로 다시 내보내는 수밖에 없습니다.
일부만 복구되고 몇 글자는 그대로예요.
복사·붙여넣기 과정에서 일부 바이트가 공백이나 다른 글자로 바뀐 경우입니다. 원본 파일에서 다시 복사하거나 "다른 가능한 해석"을 확인하세요.
입력한 글이 서버로 가나요?
아니요. 인코딩 되돌리기와 정규화는 브라우저 안에서 끝나고 어디에도 전송·저장되지 않습니다.
출처
- 문자 인코딩 디코더(EUC-KR·Windows-1252·Shift_JIS): WHATWG Encoding Standard
- 유니코드 정규화(NFC·NFD): Unicode Standard Annex #15, 한글 음절 조합: Unicode Core Spec §3.12
- UTF-8: RFC 3629
이 도구가 도움이 됐다면 알려 주세요
페이지 링크만 보냅니다. 입력한 값이나 파일은 담기지 않습니다.