복구 후보 (한글다움 점수 순)
깨짐 모양으로 원인 알아보기
| 이렇게 보이면 | 무슨 일이 있었나 | 복구 |
|---|---|---|
| 안녕하세요 | UTF-8 데이터를 Latin-1/CP1252 로 읽음 | 가능 |
| ¾È³çÇϼ¼¿ä | EUC-KR 데이터를 Latin-1/CP1252 로 읽음 | 가능 |
| 안녕 | 위 실수가 두 번 겹침(이중 인코딩) | 대부분 가능 |
| 占쏙옙, � | 디코딩 실패로 바이트가 이미 버려짐 | 불가 |
| 뷁, 궭 (희귀 음절) | EUC-KR을 UTF-8로 읽는 등 우연히 유효했던 조합 | 부분적 |
자주 묻는 것
왜 복구가 안 되는 경우가 있나요?
깨짐에는 두 종류가 있습니다. 바이트는 그대로인데 잘못 보여준 경우(Latin-1로 읽은 UTF-8 등)는 해석만 되돌리면 되므로 완전 복구가 됩니다. 반면 디코딩 단계에서 해석 불가 바이트가 �(U+FFFD)로 대체된 경우는 정보 자체가 사라진 뒤라 수학적으로 복구가 불가능합니다. UTF-8을 EUC-KR로 읽은 경우가 대표적으로, 일부 바이트 조합만 우연히 살아남아 부분 복구만 됩니다.
CP949와 EUC-KR은 다른가요?
CP949(UHC)는 EUC-KR의 확장으로, EUC-KR에 없는 8,822자(옛 완성형 밖의 음절)를 더 담습니다.
브라우저의 TextDecoder('euc-kr')는 WHATWG 표준에 따라 실제로는 CP949(windows-949)로
동작하므로, 이 도구의 EUC-KR 경로는 CP949 데이터도 처리합니다.
입력한 값이 서버로 전송되나요?
전송되지 않습니다. 변환은 전부 브라우저의 자바스크립트가 하며 네트워크 요청이 발생하지 않습니다. 개발자 도구의 네트워크 탭으로 확인해 보셔도 됩니다.
관련 도구: 한글 초성 정규식 생성기 · URL 인코더/디코더 · 해시 생성기
한글 깨짐 복구 사용 안내
안녕, 占쏙옙, 뷁 같은 깨진 한글을 여러 인코딩 조합(UTF-8, EUC-KR/CP949, Latin-1, CP1252)으로 되돌려 보고 한글다움 점수 순으로 후보를 보여줍니다. 브라우저에서만 처리되며 입력값을 서버로 보내지 않습니다.
깨진 텍스트를 붙여 넣고 복구 후보를 확인하세요. 원본 바이트가 물음표 등으로 이미 손실된 경우에는 완전한 복구가 불가능할 수 있습니다.
어떻게 구현했나
깨진 글자를 되돌린다는 것은, 지금 화면에 있는 문자를 어떤 인코딩의 바이트로 되돌린 다음 다른 인코딩으로 다시 읽는다는 뜻입니다. 이 도구는 UTF-8·EUC-KR/CP949·Latin-1·CP1252 조합을 차례로 시도하고 나온 후보를 모두 보여줍니다.
읽는 쪽은 브라우저의 TextDecoder를 쓰지만 쓰는 쪽은 직접 만들어야 했습니다. 표준 TextEncoder는 UTF-8만 내보내기 때문에, 디코더로 만든 표를 뒤집어 문자에서 바이트로 가는 역테이블을 구성했습니다.
Latin-1은 특히 조심해야 합니다. TextDecoder에 iso-8859-1을 넘기면 규격상 CP1252로 매핑돼 0x80~0x9F 구간이 달라집니다. 하필 한글 깨짐에서 자주 등장하는 구간이라 Latin-1은 별도로 구현했습니다.
후보가 여러 개 나오므로 '한글다움' 점수를 매겨 정렬합니다. 완성형 음절이 많고 대체 문자가 적을수록 위로 올립니다. 사람이 눈으로 고르는 수고를 줄이는 어림짐작이지 정답 판정이 아닙니다.
U+FFFD(�)가 섞인 문자열은 되돌릴 수 없습니다. 그 자리의 원래 바이트는 디코더가 이미 버린 뒤라 어떤 도구로도 되살릴 수 없습니다.
자주 묻는 질문
입력한 데이터는 어디에서 처리하나요?
이 도구의 입력 데이터는 브라우저에서 처리하며 도구 기능을 위해 서버로 업로드하지 않습니다. 결과를 공유하기 전 민감한 정보가 없는지 확인하세요.
결과가 예상과 다르면 어떻게 하나요?
입력 형식, 문자 인코딩과 선택한 옵션을 확인하세요. 각 도구가 안내하는 지원 범위와 제한을 확인하고, 원본 데이터를 보관한 상태에서 결과를 검토하세요.