PRELAPS 깨진 글자 복구기

사이트 소개

Prelaps(mojibake.prelaps.com)는 글자를 다루다 막히는 지점을 하나씩 푸는 작은 도구들을 모아둔 곳입니다. 모든 도구가 브라우저 안에서만 돌고, 입력한 내용을 서버로 보내지 않습니다. 아래는 첫 번째 도구인 깨진 글자 복구기에 대한 설명입니다.

무엇을 하는 도구인가

¾È³çÇϼ¼¿ä, 안녕하세요 처럼 알아볼 수 없게 깨진 글자를 원래대로 되돌립니다. 한글뿐 아니라 일본어·중국어·러시아어를 비롯한 12개 언어를 다룹니다.

글자가 깨지는 원인은 하나입니다. A 방식으로 저장한 데이터를 B 방식으로 읽은 것. 그래서 복구도 거꾸로 두 단계를 밟습니다 — 깨진 글자를 잘못 읽은 방식으로 되돌려 원래 바이트를 복원한 뒤, 진짜 방식으로 다시 읽습니다. 어느 조합이 맞는지 모르므로 220가지를 전부 시도해보고 가장 자연스러운 결과를 골라냅니다.

왜 만들었나

이런 깨짐을 고치는 표준 라이브러리로 ftfy가 있습니다. 영어권 웹에서 흔한 ’ 계열을 정조준한 도구이고, 그 영역에선 거의 완벽합니다.

그런데 한글·일본어·중국어 인코딩이 얽힌 깨짐은 대상 밖입니다. 같은 벤치마크로 재보면 이렇습니다.

깨짐 구간건수ftfy 6.3.1이 도구
CJK 인코딩으로 오독200.0%100%
CJK 원문이 깨진 경우510.0%66.7%
키릴 인코딩으로 오독3915.4%97.4%
UTF-8 → 서구권 오독 (ftfy 주력)3196.8%100%

ftfy의 주력 구간에서 이 도구가 낫다고 주장할 근거는 없습니다. 31건에서 100% 대 96.8%는 사실상 같은 값이고, ftfy 쪽이 더 정교한 부분도 많습니다. 다른 것은 CJK 구간입니다 — 한국에서 흔히 "뷁체"라 부르는 그 깨짐이 71건 중 0건 처리됩니다. 그 자리를 메우려고 만들었습니다.

얼마나 정확한가

12개 언어, 25가지 깨짐 조합을 전수로 맞춰 만든 148건으로 측정합니다. 이론상 복구가 불가능한 조합(저장 단계에서 이미 바이트가 사라진 경우)은 제외한 숫자입니다.

항목붙여넣기파일
1순위 정답률84.5%75.3%
후보 3개 안에 정답96.6%88.3%
평균 처리 시간2.3ms0.3ms

이 숫자는 실제 브라우저에서 잰 값입니다. 두 모드는 재는 대상이 달라 직접 비교할 수 없습니다 — 파일 쪽은 서로 구분이 원리적으로 불가능한 단일바이트 인코딩 12종을 같은 비중으로 재기 때문에 전체 숫자가 낮게 나옵니다. 한국어·중국어 파일만 보면 100%입니다.

1순위가 틀린 경우에도 대부분 2·3순위에 정답이 있습니다. 후보를 세 개까지 보여주는 것은 그래서입니다.

입력이 서버로 가지 않습니다

붙여넣은 글자와 올린 파일은 전부 브라우저 안에서만 처리됩니다. 이 사이트에는 텍스트를 받는 서버가 없습니다. 회사 문서나 개인 기록처럼 밖으로 내보내기 곤란한 내용도 그대로 쓰실 수 있습니다. 자세한 내용은 개인정보처리방침에 적어두었습니다.

만든 방식

외부 라이브러리 없이 브라우저에 이미 들어 있는 기능만으로 만들었습니다. 압축 파일 안의 한글 파일명을 고칠 때도 압축을 풀었다 다시 하지 않고 이름만 바꿔 씁니다 — 파일 내용이 손상될 여지를 없애기 위해서입니다.

엔진을 고칠 때마다 148건 벤치마크를 다시 돌려 다른 언어가 조용히 나빠지지 않았는지 확인합니다. 정확도를 올렸다고 적으려면 그 전에 숫자로 보여야 한다는 원칙으로 만들고 있습니다.

운영

개인이 운영하는 무료 도구입니다. 오류 제보나 개선 제안은 문의 페이지로 보내주시면 확인하겠습니다.