문자셋 변환기 — 깨진 글자(모지바케) 복구

Windows-1252·ISO-8859·Shift_JIS·EUC-KR·GBK·Big5·KOI8-R 등 레거시 코드페이지를 올바른 유니코드로 디코딩해 깨진 글자를 복구합니다.

디코딩은 브라우저의 네이티브 TextDecoder를 사용하며, 오프라인에서도 동작합니다.

디코딩된 텍스트 (유니코드 / UTF-8)

깨진 글자를 원래 문자로 되돌리기

파일이나 데이터베이스가 Windows-1252·ISO-8859·Shift_JIS·EUC-KR·EUC-JP·GBK·GB18030·Big5·KOI8-R 같은 레거시 코드페이지로 저장됐는데 나중에 UTF-8(또는 다른 코드페이지)로 읽히면 모지바케가 생깁니다. 예를 들어 한글이 ÇѱÛ처럼, café가 café처럼 보이죠. 원본 바이트를 16진수나 Base64로 붙여넣거나 파일을 드롭한 뒤, 바이트가 원래 인코딩된 문자셋을 고르면 올바른 유니코드 텍스트가 즉시 표시됩니다. 어떤 문자셋인지 모르겠다면, 페이지가 바이트로 추정한 문자셋을 보여 주고 고른 것과 다를 때는 “이것으로 보기” 버튼을 띄웁니다. 모든 문자셋으로 한꺼번에 보기는 각 문자셋이 바이트를 어떻게 읽는지 가장 그럴듯한 것부터 한 번에 보여 주며, 모든 바이트가 유효한 것에는 ✓를 붙입니다. 텍스트 인코딩 탭은 반대 방향입니다 — 유니코드 텍스트를 레거시 문자셋으로 써서 바이트를 16진수로 보여 주고 파일로 저장합니다(목록에서 GB18030만 빼고 모두 됩니다). 두 번 이상 깨진 글자라면 "이 결과를 한 번 더 고치기"를 누르세요. 결과를 "깨진 글자 붙여넣기" 칸에 다시 넣고 한 겹 더 풀어 봅니다.

동작 방식

모든 처리는 브라우저 내장 TextDecoder(WHATWG Encoding 표준)로 이뤄집니다. 라이브러리도 서버 통신도 없고 오프라인에서도 동작하며, 바이트는 기기를 벗어나지 않습니다.

자주 묻는 질문

모지바케(글자 깨짐)가 뭔가요?

한 문자셋으로 인코딩된 바이트를 다른 문자셋으로 디코딩할 때 생기는 깨진 글자입니다. 예컨대 EUC-KR·Windows-1252 바이트를 UTF-8로 읽는 경우죠. 여기서 올바른 원본 문자셋을 고르면 원래 글자가 복구됩니다.

어떤 인코딩을 지원하나요?

브라우저 TextDecoder가 지원하는 모든 코드페이지입니다. Windows-1250~1258, ISO-8859-2/5/6/7/8/13/15, KOI8-R·KOI8-U, Mac Roman, Shift_JIS, EUC-JP, EUC-KR, GBK, GB18030, Big5를 포함하며 UTF-8도 있고, 그 바로 뒤에 UTF-16 LE·BE가 있습니다. 텍스트 인코딩은 이 가운데 GB18030만 빼고 모두 쓸 수 있습니다 — 브라우저에 GB18030의 4바이트 부분에 대한 표가 없기 때문입니다.

내 텍스트의 바이트는 어떻게 넣나요?

16진수(예: 48 65 6c 6c 6f)나 Base64로 붙여넣거나, "파일 업로드" 탭으로 바꿔 파일을 그대로 놓으면 됩니다. 파일은 원시 바이트를 읽어 고른 문자셋으로 디코딩하므로, EUC-KR로 저장된 옛 텍스트 파일도 그대로 올려서 확인할 수 있습니다.

문자셋을 대신 알아내거나, 텍스트를 옛 문자셋으로 쓸 수 있나요?

둘 다 됩니다. 16진수·파일 탭에서는 “바이트로 추정한 문자셋”이 가장 그럴듯한 문자셋을 알려 줍니다 — UTF-8 유효성과 BOM, 한 가지 문자 체계로 일관된 글, 맞는 해석에서만 나오는 한글이나 가나, 잘못 읽으면 티가 나는 단어 모양을 따져 보고, 고른 문자셋과 다르면 “이것으로 보기” 버튼을 띄웁니다. EUC-KR과 GBK처럼 바이트만으로는 가를 수 없는 경우는 페이지와 브라우저의 언어로 정합니다. 모든 문자셋으로 한꺼번에 보기는 모든 문자셋의 해석을 한 번에 보여 줍니다. 텍스트 인코딩 탭은 고른 문자셋으로 텍스트를 쓰고, 다운로드하면 UTF-8이 아니라 그 바이트가 저장됩니다. 문자셋에 바이트가 없는 문자는 어떤 문자인지와 몇 번째인지 알려 주며 거부합니다.

UTF-16이나 두 번 깨진 글자도 다루나요?

둘 다 됩니다. UTF-16 LE·BE가 UTF-8 바로 뒤에 있고, 바이트 추정은 바이트 순서 표시(BOM)가 있거나 한 바이트 걸러 0이 있을 때만 UTF-16을 내놓습니다 — 평범한 ASCII도 UTF-16으로는 오류 없이 풀리기 때문입니다. 두 번 이상 깨진 글자는 복사 옆의 "이 결과를 한 번 더 고치기"를 누르면 결과를 깨진 글자 칸에 다시 넣고 한 번 더 고칩니다.