‘�’, ‘?’ 문자 깨짐은 되돌릴 수 있을까? 빠진 글자 복원과 되돌릴 수 없는 깨짐 구별법
깨진 일본어 문장에 ‘�’(검은 마름모 안의 물음표)가 섞여 있으면 이제 되돌릴 수 없다고 생각하기 쉽습니다. 사실 ‘�’ 자리에서 사라진 것은 대개 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) | 文字와 ta | i, 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
깨진 채로 덮어쓰지 않는다
깨져서 표시되는 파일을 저장하면 ‘�’ 자리의 원래 바이트가 사라집니다. 알아차리면 저장하지 말고 닫은 뒤 문자 코드를 지정해 다시 엽니다.
- 2
원본 파일이나 메일을 남겨 둔다
변환이나 수정을 할 때는 원본 파일을 복사한 뒤 작업합니다. 원본이 있으면 깨진 글에서 추측하지 않아도 확실히 되돌릴 수 있습니다.
- 3
‘�’까지 포함해 그대로 붙여넣는다
깨진 글을 도구에 붙여넣을 때는 ‘�’를 지우거나 읽을 수 있는 부분만 뽑아내지 마세요. ‘�’의 위치가 메우기 위한 단서가 됩니다.
어떤 문자 코드를 혼동해 깨졌는지는 문자 깨짐 패턴 조견표에서 확인할 수 있습니다. CSV를 Excel로 열어 깨졌다면 CSV가 엑셀에서 깨질 때 고치는 법의 순서대로 다시 열면, ‘�’를 추측할 것도 없이 원래 글자를 읽을 수 있습니다.
자주 묻는 질문
- 문자 깨짐의 ‘�’는 무엇인가요?
- 유니코드의 U+FFFD(대체 문자)로, 소프트웨어가 바이트를 글자로 읽지 못한 곳에 표시되는 기호입니다. 문자 코드를 혼동해 열었을 때 규칙에 맞지 않는 바이트 배열이 ‘�’로 바뀝니다.
- ‘�’가 섞인 문자 깨짐은 되돌릴 수 있나요?
- UTF-8을 Shift_JIS로 열었을 때의 ‘�’라면 대부분 추측으로 메울 수 있습니다. 한 글자당 빠진 것이 1바이트 정도이고 UTF-8 규칙으로 후보를 좁힐 수 있기 때문입니다. 다만 문장 끝처럼 단서가 적은 곳은 빗나갈 수 있습니다.
- ‘?’로 바뀐 글자는 되돌릴 수 있나요?
- 되돌릴 수 없습니다. 문자 코드를 변환해 저장할 때 표현할 수 없는 글자가 ‘?’로 바뀌어 원래 글자의 정보가 남아 있지 않기 때문입니다. 원본 파일이 있으면 그것을 올바른 문자 코드로 다시 여세요.
- ‘�’라는 깨짐은 무엇인가요?
- ‘�’를 UTF-8로 저장한 바이트(EF BF BD)를 Latin-1(Windows-1252)로 읽은 것입니다. 한 번 깨진 글이 다시 한 번 깨졌다는 표시로, 두 번을 거꾸로 따라가면 되돌릴 수 있는 경우가 있습니다.
이 글에서 소개한 도구
함께 읽으면 좋은 글
문자 깨짐 패턴 조견표: 縺, ã, ‚, ƒ, $B로 원인이 된 문자 코드 구별하기
‘縺薙s縺ォ縺。縺ッ’, ‘日本語’, ‘‚±‚ñ‚É‚¿‚Í’ 같은 일본어 문자 깨짐은 엉망으로 보이지만 사실 규칙대로 깨진 것입니다. 처음 나오는 글자를 보면 어떤 문자 코드를 어떤 것과 혼동했는지 거의 알 수 있습니다. 이 글에서는 자주 보는 일곱 가지 패턴을 예시와 함께 조견표로 정리하고, 각각이 일어나는 이유와 되돌릴 수 있는 깨짐과 없는 깨짐의 구별법을 설명합니다.
글 읽기 →메일 제목이 깨지는 원인과 해결법: =?UTF-8?B?, =?ISO-2022-JP?B?, $B 읽는 법
받은 일본어 메일의 제목이 ‘=?UTF-8?B?5paH5a2X…?=’ 같은 영문자와 숫자로 보이거나, 본문이 ‘$BL@F|$N…(B’로 보일 때가 있습니다. 이는 메일로 일본어를 보내기 위한 정해진 표기법이 그대로 드러난 상태입니다. 이 글에서는 제목의 =?…?= 구조, B 방식과 Q 방식의 차이, JIS 메일의 $B, 본문이 깨지는 원인과 보내는 쪽에서 할 수 있는 대책을 정리합니다.
글 읽기 →CSV가 엑셀에서 깨질 때 고치는 법|UTF-8(BOM 포함)과 CP949(ANSI) 구분해서 쓰기
웹 서비스에서 내려받은 CSV를 더블클릭해 엑셀로 열었더니 ‘이름,주소’가 ‘�씠由�,二쇱냼’처럼 깨져 있었다. 이것은 CSV 내용이 망가진 것이 아니라 엑셀이 문자 인코딩을 잘못 짚어 읽었을 뿐입니다. 이 글에서는 깨지는 이유, 지금 열어 둔 CSV를 제대로 여는 법, 다음부터 깨지지 않게 저장하는 법(UTF-8 BOM 포함·CP949), 변환할 때 사라지는 문자의 주의점을 정리합니다.
글 읽기 →