가이드

글자가 깨지는 이유: 인코딩과 모지바케

café나 안녕처럼 깨진 글은 망가진 것처럼 보이지만 대개는 더 단순한 일입니다. 맞는 바이트를 틀린 규칙으로 읽은 것입니다. 어떤 규칙이 틀렸는지 알면 복구할 수 있는지도 알 수 있습니다.

글은 바이트이고 인코딩은 규칙입니다

컴퓨터는 글을 바이트로 저장합니다. 인코딩은 어떤 바이트가 어떤 글자인지 정한 규칙입니다. 웹이 가장 많이 쓰는 UTF-8은 é를 C3과 A9 두 바이트로 씁니다. windows-1252는 글자마다 바이트 하나를 쓰며 C3은 Ã, A9는 ©라고 정해 두었습니다. 프로그램이 UTF-8 바이트를 windows-1252로 읽으면 한 글자여야 할 자리에 é라는 두 글자를 보여 줍니다. 이런 깨짐을 일본어에서 온 말로 모지바케라고 합니다.

같은 실수에서 나오는 세 예

쓴 것 UTF-8 바이트 windows-1252로 읽으면
café의 é C3 A9 (2바이트) café
안녕 6바이트 안녕 (6글자)
이모지 😀 F0 9F 98 80 (4바이트) 😀

일반 영어는 바뀌지 않습니다. A부터 Z까지와 숫자는 두 인코딩에서 같은 값의 바이트 하나이기 때문입니다. 그래서 깨짐은 이름, 악센트, 영어가 아닌 글에서 먼저 보입니다.

한국어에서 흔한 두 가지 원인

깨진 한국어는 대개 두 실수 중 하나입니다. UTF-8 한글을 windows-1252로 읽으면 ì, ë, í 같은 글자와 •, … 같은 기호가 나옵니다. 안녕가 그 예입니다. EUC-KR(CP949라고도 함)로 쓴 한글을 windows-1252나 Latin-1로 읽으면 ¾, È, ³, ç 같은 글자가 나옵니다. 엑셀과 메모장은 한글을 EUC-KR로 저장하는 일이 많고 다른 프로그램은 UTF-8을 기대하는 경우가 많아서, CSV 파일이 다른 컴퓨터에서 깨져 열릴 수 있습니다.

복구할 수 있는 경우

잃어버린 정보가 없으면 깨짐은 되돌릴 수 있습니다. 깨진 글자를 틀린 인코딩으로 쓰면 같은 바이트로 돌아가고, 그 바이트를 맞는 인코딩으로 읽으면 됩니다. 두 번 이상 깨진 글도 같은 방식으로 한 겹씩 풀 수 있습니다. 복구한 글을 같은 방식으로 다시 깨뜨렸을 때 처음의 깨진 글이 정확히 나오면 그 복구는 믿을 만합니다.

복구할 수 없는 경우

깨진 글에 대체 문자 �나 글자 자리의 물음표가 있다면 바이트가 이미 사라진 것입니다. 프로그램이 읽을 수 없는 바이트를 만나 그 표시를 쓴 것이므로 어떤 도구도 되살릴 수 없고, 되살렸다고 하는 도구는 짐작하는 것입니다. UTF-8 한글을 EUC-KR로 읽었거나 EUC-KR을 UTF-8로 읽었을 때 특히 많이 생깁니다. 방법은 원본 파일이나 출처로 돌아가 맞는 인코딩으로 여는 것뿐입니다.

해 볼 일

  1. 깨진 글을 봅니다. ì, ë 같은 글자는 UTF-8을 windows-1252로 읽은 것이고, ¾, È 같은 글자는 EUC-KR입니다.
  2. 깨진 글 복구 도구에 붙여 넣고, 언어를 알면 고릅니다.
  3. 증거를 확인합니다. 복구한 글이 실제 글처럼 읽혀야 하고, 도구는 다시 깨뜨려 붙여 넣은 글이 나올 때만 맞는 것으로 표시합니다.
  4. �나 ?가 보이면 원본 출처로 돌아가세요.

깨진 글자 도구는 반대 일을 일부러 합니다. 글을 깨진 모양으로 바꿔서 잘못된 인코딩이 무슨 일을 하는지 보여 줍니다.

관련 도구

출처

마지막 업데이트: