원리 해설게시일 읽는 시간 약 8분

‘�’, ‘?’ 문자 깨짐은 되돌릴 수 있을까? 빠진 글자 복원과 되돌릴 수 없는 깨짐 구별법

깨진 일본어 문장에 ‘�’(검은 마름모 안의 물음표)가 섞여 있으면 이제 되돌릴 수 없다고 생각하기 쉽습니다. 사실 ‘�’ 자리에서 사라진 것은 대개 1바이트뿐이어서, 문자 코드의 규칙과 앞뒤 문맥으로 원래 글자를 상당한 확률로 추측할 수 있습니다. 반면 ‘?’나 ‘·’로 바뀐 채 저장된 것, ‘�’만 가득한 깨짐은 되돌릴 수 없습니다. 이 글에서는 ‘�’가 나오는 이유와 추측으로 메우는 원리, 되돌릴 수 있는지 구별하는 법, 깨짐을 악화시키지 않기 위한 주의점을 정리합니다.

‘�’는 읽지 못한 바이트 대신 표시되는 기호

‘�’는 유니코드의 U+FFFD(대체 문자)라는 기호로, 소프트웨어가 바이트를 글자로 읽지 못했을 때 그 대신 표시됩니다. 문자 코드 규칙에 맞지 않는 바이트 배열이 나오면 소프트웨어는 읽지 못한 부분을 ‘�’로 바꾸고 다음으로 넘어갑니다.

자주 보는 것은 UTF-8 일본어를 Shift_JIS로 열었을 때입니다. UTF-8의 히라가나와 한자는 한 글자에 3바이트이고 Shift_JIS는 2바이트씩 끊어 읽으므로 경계가 점점 어긋납니다. 어긋난 결과 Shift_JIS에 없는 바이트 조합이 된 곳이나 마지막에 1바이트만 남은 곳이 ‘�’가 됩니다. 일본어 ‘文字化 + ke’(문자 깨짐)는 ‘譁�ュ怜喧縺�’가 되고, ‘会議 no 資料’(회의 자료)는 ‘莨夊ュー縺ョ雉�侭’가 됩니다.

‘�’가 섞여 있어도 추측으로 메울 수 있는 원리

UTF-8에는 ‘첫 바이트로 몇 바이트짜리 글자인지 정해지고, 이어지는 바이트는 80~BF 범위’라는 정해진 형태가 있습니다. 깨진 글을 거꾸로 따라가면 ‘이 글자는 3바이트 중 두 번째가 빠졌다’처럼 빠진 바이트의 수와 위치를 알 수 있습니다. 나아가 Shift_JIS로 읽었을 때 실제로 ‘�’가 되는 바이트만으로 후보를 좁힐 수 있습니다.

남은 후보를 하나씩 대입해 일본어로 자연스러운 글자(자주 쓰는 한자와 히라가나)가 되는 것을 고르는 것이 문자 깨짐 복원·해독 도구의 방식입니다. 실제로 시험한 결과는 다음과 같습니다. 히라가나가 들어간 결과는 로마자와 한국어 설명으로 표기했습니다.

깨진 글자메운 결과메운 글자다른 후보 예
莨夊ュー縺ョ雉�侭会議 no 資料(회의 자료)資料賃料, 賄料
螻ア逕ー螟ェ驛�,譚ア莠ャ驛ス蜊�サ」逕ー蛹コ山田太郎,東京都千代田区(이름과 주소)郎, 千代—
譏取律縺ョ莨夊ュー縺ョ雉�侭繧帝√j縺セ縺吶…일본어 두 문장 전체(‘내일 회의 자료를 보냅니다. 잘 부탁드립니다.’라는 뜻)資料와 끝의 。—
譁�ュ怜喧縺�文字化 + ta(실제로는 ke)文字와 tai, ka, su, ke

마지막 예처럼 문장 끝의 한 글자는 앞뒤 단서가 적어서 빗나갈 수 있습니다. 메운 글자는 노란색으로 표시되고, 누르면 다른 후보로 바꿀 수 있으니 문맥에 맞지 않는 것은 다시 고르세요. 글이 길수록 단서가 늘어 잘 맞습니다.

되돌릴 수 없는 문자 깨짐 구별법

추측으로 메울 수 있는 것은 깨진 글자 대부분에 원래 바이트가 남아 있을 때뿐입니다. 다음과 같은 상태는 원래 정보가 사라졌으므로 되돌릴 수 없습니다.

  • ‘?????’처럼 ‘?’뿐: 문자 코드를 변환해 저장할 때 표현할 수 없는 글자가 ‘?’로 바뀌었다. 원래 글자의 정보가 남아 있지 않다
  • ‘������’처럼 ‘�’뿐: Shift_JIS나 UTF-8 글을 EUC-JP로 읽었을 때 많다. 거의 모든 바이트가 ‘�’가 되어 남은 것이 없다
  • ‘�e�X�g’처럼 영문자와 ‘�’가 번갈아 나옴: 2바이트 중 첫 바이트가 사라지고 둘째 바이트만 남았다(이 예는 일본어 가타카나로 쓴 ‘테스트’)
  • ‘譁·ュ怜喧縺·’처럼 가운뎃점이 섞임: Excel 등이 ‘�’ 대신 가운뎃점으로 표시한 것이 그대로 저장되거나 복사되었다. 진짜 가운뎃점과 구별되지 않아 메우지 못하는 경우가 많다

도구에서 되돌리지 못한 글자는 기호 ‘〓’로 표시합니다. 〓가 많을 때는 깨진 글자에서 되돌리기를 포기하고, 원본 파일이나 메일을 구해 올바른 문자 코드로 다시 여는 것이 확실합니다.

두 번 깨진 문자와 ‘�’

한 번 깨진 글을 저장하고 그것을 다시 다른 문자 코드로 읽으면 두 번 깨진 상태가 됩니다. 예를 들어 UTF-8을 Shift_JIS로 읽어 깨진 ‘譁�ュ怜喧縺�’를 UTF-8로 저장하고 Latin-1로 읽으면 ‘è­ï¿½ï½­æ€œå–§ç¸ºï¿½’가 됩니다.

‘�’는 ‘�’를 UTF-8로 저장한 바이트(EF BF BD)를 Latin-1로 읽은 것으로, 두 번 깨졌다는 표시입니다. 도구는 두 번 깨진 조합도 모두 시도하므로 이 예도 ‘文字化 + ta’까지 돌아오고, 마지막 한 글자를 후보에서 다시 고르면 원래 글이 됩니다. 다만 세 번 이상 깨진 것이나 도중에 ‘?’로 바뀐 것은 되돌릴 수 없을 수 있습니다.

문자 깨짐을 악화시키지 않기 위한 주의

  1. 1

    깨진 채로 덮어쓰지 않는다

    깨져서 표시되는 파일을 저장하면 ‘�’ 자리의 원래 바이트가 사라집니다. 알아차리면 저장하지 말고 닫은 뒤 문자 코드를 지정해 다시 엽니다.

  2. 2

    원본 파일이나 메일을 남겨 둔다

    변환이나 수정을 할 때는 원본 파일을 복사한 뒤 작업합니다. 원본이 있으면 깨진 글에서 추측하지 않아도 확실히 되돌릴 수 있습니다.

  3. 3

    ‘�’까지 포함해 그대로 붙여넣는다

    깨진 글을 도구에 붙여넣을 때는 ‘�’를 지우거나 읽을 수 있는 부분만 뽑아내지 마세요. ‘�’의 위치가 메우기 위한 단서가 됩니다.

어떤 문자 코드를 혼동해 깨졌는지는 문자 깨짐 패턴 조견표에서 확인할 수 있습니다. CSV를 Excel로 열어 깨졌다면 CSV가 엑셀에서 깨질 때 고치는 법의 순서대로 다시 열면, ‘�’를 추측할 것도 없이 원래 글자를 읽을 수 있습니다.

자주 묻는 질문

문자 깨짐의 ‘�’는 무엇인가요?
유니코드의 U+FFFD(대체 문자)로, 소프트웨어가 바이트를 글자로 읽지 못한 곳에 표시되는 기호입니다. 문자 코드를 혼동해 열었을 때 규칙에 맞지 않는 바이트 배열이 ‘�’로 바뀝니다.
‘�’가 섞인 문자 깨짐은 되돌릴 수 있나요?
UTF-8을 Shift_JIS로 열었을 때의 ‘�’라면 대부분 추측으로 메울 수 있습니다. 한 글자당 빠진 것이 1바이트 정도이고 UTF-8 규칙으로 후보를 좁힐 수 있기 때문입니다. 다만 문장 끝처럼 단서가 적은 곳은 빗나갈 수 있습니다.
‘?’로 바뀐 글자는 되돌릴 수 있나요?
되돌릴 수 없습니다. 문자 코드를 변환해 저장할 때 표현할 수 없는 글자가 ‘?’로 바뀌어 원래 글자의 정보가 남아 있지 않기 때문입니다. 원본 파일이 있으면 그것을 올바른 문자 코드로 다시 여세요.
‘�’라는 깨짐은 무엇인가요?
‘�’를 UTF-8로 저장한 바이트(EF BF BD)를 Latin-1(Windows-1252)로 읽은 것입니다. 한 번 깨진 글이 다시 한 번 깨졌다는 표시로, 두 번을 거꾸로 따라가면 되돌릴 수 있는 경우가 있습니다.

이 글에서 소개한 도구

함께 읽으면 좋은 글

원리 해설약 8분

문자 깨짐 패턴 조견표: 縺, ã, ‚, ƒ, $B로 원인이 된 문자 코드 구별하기

‘縺薙s縺ォ縺。縺ッ’, ‘日本語’, ‘‚±‚ñ‚É‚¿‚Í’ 같은 일본어 문자 깨짐은 엉망으로 보이지만 사실 규칙대로 깨진 것입니다. 처음 나오는 글자를 보면 어떤 문자 코드를 어떤 것과 혼동했는지 거의 알 수 있습니다. 이 글에서는 자주 보는 일곱 가지 패턴을 예시와 함께 조견표로 정리하고, 각각이 일어나는 이유와 되돌릴 수 있는 깨짐과 없는 깨짐의 구별법을 설명합니다.

글 읽기 →
원리 해설약 8분

메일 제목이 깨지는 원인과 해결법: =?UTF-8?B?, =?ISO-2022-JP?B?, $B 읽는 법

받은 일본어 메일의 제목이 ‘=?UTF-8?B?5paH5a2X…?=’ 같은 영문자와 숫자로 보이거나, 본문이 ‘$BL@F|$N…(B’로 보일 때가 있습니다. 이는 메일로 일본어를 보내기 위한 정해진 표기법이 그대로 드러난 상태입니다. 이 글에서는 제목의 =?…?= 구조, B 방식과 Q 방식의 차이, JIS 메일의 $B, 본문이 깨지는 원인과 보내는 쪽에서 할 수 있는 대책을 정리합니다.

글 읽기 →
사용 가이드약 8분

CSV가 엑셀에서 깨질 때 고치는 법|UTF-8(BOM 포함)과 CP949(ANSI) 구분해서 쓰기

웹 서비스에서 내려받은 CSV를 더블클릭해 엑셀로 열었더니 ‘이름,주소’가 ‘�씠由�,二쇱냼’처럼 깨져 있었다. 이것은 CSV 내용이 망가진 것이 아니라 엑셀이 문자 인코딩을 잘못 짚어 읽었을 뿐입니다. 이 글에서는 깨지는 이유, 지금 열어 둔 CSV를 제대로 여는 법, 다음부터 깨지지 않게 저장하는 법(UTF-8 BOM 포함·CP949), 변환할 때 사라지는 문자의 주의점을 정리합니다.

글 읽기 →