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

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

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

문자 깨짐은 ‘저장한 문자 코드’와 ‘읽은 문자 코드’의 어긋남

컴퓨터 안의 글자는 모두 숫자(바이트)의 나열로 저장됩니다. 어떤 글자를 어떤 숫자로 나타낼지 정한 규칙이 문자 코드이며, 일본어에서는 UTF-8, Shift_JIS, EUC-JP, JIS(ISO-2022-JP) 네 가지가 자주 쓰입니다. 예를 들어 히라가나 ‘a’는 UTF-8에서 E3 81 82의 3바이트, Shift_JIS에서 82 A0의 2바이트입니다.

문자 깨짐은 어떤 문자 코드로 저장한 바이트를 다른 문자 코드의 규칙으로 읽을 때 일어납니다. 바이트 자체는 망가지지 않았고 읽는 법만 틀린 것이므로, 대부분 ‘잘못 읽은 문자 코드’로 바이트로 되돌린 뒤 ‘원래 문자 코드’로 다시 읽으면 원래 글로 돌아옵니다.

자주 보는 일곱 가지 패턴 조견표

다음 표는 문자 깨짐 복원·해독 도구로 실제로 깨뜨린 결과입니다. 왼쪽의 ‘표지 글자’가 많이 나오면 그 행의 혼동을 의심해 보세요. 예시 단어는 일본어 인사말 ‘konnichiwa’(안녕하세요)입니다.

표지 글자원래 문자 코드잘못 읽은 문자 코드‘konnichiwa’의 깨진 모양되돌릴 수 있나
縺, 繧, 繝, 譁, スUTF-8Shift_JIS縺薙s縺ォ縺。縺ッ대부분 가능(‘�’는 추측으로 메움)
ã, æ, å, è, â€UTF-8Latin-1(Windows-1252)ã“ã‚“ã«ã¡ã¯가능
‚, ƒ, Œ, “, •Shift_JISLatin-1(Windows-1252)‚±‚ñ‚É‚¿‚Í가능
、, ・, ニ, マEUC-JPShift_JIS、ウ、ヒ、チ、マ대부분 가능
¤, ¥, Ê, ÆEUC-JPLatin-1(Windows-1252)¤³¤ó¤Ë¤Á¤Ï가능
$B…(BJIS(ISO-2022-JP)ESC 기호가 사라짐$B$3$s$K$A$O(B가능
‘�’뿐Shift_JIS, UTF-8EUC-JP(‘�’가 늘어섬)거의 불가능

다른 단어로 보면, ‘日本語’(일본어)는 UTF-8→Latin-1에서 ‘日本語’, Shift_JIS→Latin-1에서 ‘“ú–{Œê’가 되고, 가타카나로 쓴 ‘테스트’는 Shift_JIS→Latin-1에서 ‘ƒeƒXƒg’, ‘東京都’(도쿄도)는 UTF-8→Shift_JIS에서 ‘譚ア莠ャ驛ス’, 일본어로 ‘문자 깨짐’을 뜻하는 단어는 EUC-JP→Latin-1에서 ‘ʸ»ú²½¤±’가 됩니다.

‘縺’, ‘繧’, ‘譁’: UTF-8을 Shift_JIS로 열었다

가장 자주 보는 패턴입니다. UTF-8로 저장된 CSV를 Excel에서 그대로 열었을 때, 오래된 Windows 소프트웨어나 메모장으로 열었을 때, Shift_JIS를 전제로 한 업무 시스템에 UTF-8 데이터를 가져왔을 때 일어납니다.

  • 히라가나가 많은 글은 ‘縺’투성이가 된다(히라가나 대부분은 UTF-8에서 E3 81이나 E3 82로 시작하고, Shift_JIS에서는 각각 ‘縺’, ‘繧’로 읽힌다)
  • 가타카나가 많으면 ‘繝’가 눈에 띈다(가타카나 대부분은 E3 83으로 시작한다)
  • 한자는 ‘譁’, ‘莨’, ‘螻’ 등 평소 보기 힘든 한자로 깨진다
  • UTF-8은 한 글자에 3바이트, Shift_JIS는 2바이트로 끊으므로 경계가 어긋난 곳이 ‘�’나 가운뎃점이 된다

‘譁�ュ怜喧縺�’(일본어로 ‘문자 깨짐’을 뜻하는 단어)처럼 ‘�’가 섞이는 것이 이 패턴의 특징입니다. ‘�’ 자리에서 원래 바이트가 하나 사라졌지만, UTF-8 규칙으로 빠진 바이트의 수와 위치를 알 수 있어 도구가 일본어로 자연스러운 글자를 추측해 메웁니다. 자세한 내용은 ‘�’, ‘?’ 문자 깨짐은 되돌릴 수 있을까?에서 설명합니다.

‘ã’, ‘æ’, ‘‚’, ‘ƒ’: 다른 시장용 소프트웨어로 열었다

악센트가 붙은 알파벳과 기호만 나오는 것은 일본어를 서유럽용 문자 코드(Latin-1, 정확히는 Windows-1252)로 읽었을 때입니다. 해외 메일 소프트웨어나 CMS, 데이터베이스 문자 코드 설정이 다른 WordPress, 영어판 소프트웨어에서 일어나기 쉽습니다.

  • ‘ã’로 시작하는 글자가 많다→UTF-8 히라가나·가타카나(첫 바이트 E3). ‘æ’, ‘å’, ‘ä’, ‘è’, ‘é’, ‘ç’는 UTF-8 한자(첫 바이트 E4~E9)
  • ‘‒가 눈에 띈다→UTF-8 기호(‘…’, ‘“’, ‘–’ 등 첫 바이트가 E2인 것)
  • ‘‚’가 많다→Shift_JIS 히라가나(첫 바이트 82). ‘ƒ’는 가타카나(첫 바이트 83)
  • ‘¤’, ‘¥’가 많다→EUC-JP 히라가나(첫 바이트 A4)·가타카나(첫 바이트 A5)

Latin-1은 256가지 바이트의 거의 전부에 글자를 할당하므로 원래 바이트가 그대로 남아 되돌리기 쉬운 것이 특징입니다. 다만 Windows-1252에서 글자가 할당되지 않은 몇 바이트(81, 8D, 8F, 90, 9D)는 보이지 않는 제어 문자가 되어 복사할 때 빠질 수 있습니다. ‘ã“ã‚“ã«ã¡ã¯’도 사실 ‘ã’와 ‘“’ 사이에 보이지 않는 글자가 있습니다. 빠진 곳은 도구가 위치를 알아내 메웁니다.

‘、’, ‘$B’: 오래된 서버와 메일의 문자 코드

반각 ‘、’, ‘ウ’, ‘ヒ’ 등이 번갈아 늘어서는 것은 EUC-JP 글을 Shift_JIS로 읽었을 때입니다. EUC-JP는 예전 Linux·UNIX 서버와 게시판, 오래된 Perl CGI에서 쓰였습니다. 오래된 웹사이트의 로그나 메일 아카이브를 열면 만나게 됩니다.

‘$BJ8;z2=$1(B’처럼 ‘$B’와 ‘(B’로 둘러싸인 영문자와 숫자가 되는 것은 JIS(ISO-2022-JP) 글에서 전환 신호인 ESC(제어 문자)가 빠졌을 때입니다. 일본어 메일은 이 문자 코드로 보내졌기 때문에, 오래된 메일을 다른 소프트웨어로 옮기거나 텍스트로 복사하면 일어납니다. ‘$B’와 ‘(B’ 사이를 두 글자씩 읽으면 되돌릴 수 있습니다. 메일 제목의 깨짐은 메일 제목이 깨지는 원인과 해결법에 정리했습니다.

패턴을 알았다면 어떻게 되돌릴까

  1. 1

    원본 파일이 있으면 다시 여는 것이 확실하다

    표시만 깨진 것이라면 편집기나 브라우저에서 문자 코드를 지정해 다시 열면 돌아옵니다. 깨진 상태로 덮어쓰면 ‘�’ 자리의 정보가 사라져 되돌릴 수 없으므로 저장하기 전에 알아차리는 것이 중요합니다.

  2. 2

    깨진 글자밖에 없다면 붙여넣어 되돌린다

    메일 본문이나 화면을 복사한 내용밖에 없을 때는 문자 깨짐 복원·해독 도구에 붙여넣습니다. 일곱 가지 혼동과 두 번 깨진 경우(예: UTF-8→Shift_JIS로 깨진 글을 다시 Latin-1로 읽은 것)를 모두 시도해, 일본어로 읽히는 것부터 나열합니다.

  3. 3

    추측으로 메운 글자를 확인한다

    ‘�’에서 메운 글자는 노란색으로 표시됩니다. 짧은 글에서는 추측이 빗나갈 수 있으니 문맥에 맞지 않는 글자는 눌러서 다른 후보로 바꾸세요.

CSV를 Excel로 열었을 때의 깨짐은 CSV가 엑셀에서 깨질 때 고치는 법의 순서대로 다음부터 깨지지 않는 형태로 다시 저장할 수 있습니다. ‘%E3%81%82’나 ‘\u3042’ 같은 문자열은 깨진 것이 아니라 부호 그대로 보이는 상태입니다. 이쪽은 %E3, \u3042, \343 읽는 법을 참고하세요.

자주 묻는 질문

‘縺’, ‘繧’투성이인 문자 깨짐의 원인은 무엇인가요?
UTF-8로 저장된 일본어를 Shift_JIS로 열었기 때문입니다. UTF-8 히라가나는 대부분 E3 81이나 E3 82로 시작하고, Shift_JIS에서는 이것이 ‘縺’, ‘繧’로 읽힙니다. UTF-8로 다시 열거나 깨진 글자를 UTF-8로 다시 읽으면 돌아옵니다.
‘ã’나 ‘‒가 늘어서는 깨짐은 무엇인가요?
UTF-8 일본어나 기호를 Latin-1(Windows-1252)로 표시했을 때의 깨짐입니다. 해외 소프트웨어나 데이터베이스 문자 코드 설정의 차이로 일어납니다. 원래 바이트가 거의 그대로 남아 있어 대부분 되돌릴 수 있습니다.
문자 깨짐은 어느 것이든 되돌릴 수 있나요?
깨진 글자에 원래 바이트가 남아 있으면 되돌릴 수 있습니다. UTF-8→Shift_JIS, UTF-8→Latin-1, Shift_JIS→Latin-1, EUC-JP→Shift_JIS, ESC가 빠진 JIS 등은 가능합니다. 반면 EUC-JP로 읽어 ‘�’뿐이 된 것이나 ‘?’로 바꿔 저장한 것은 되돌릴 수 없습니다.
깨진 상태로 저장해 버렸습니다. 이제 되돌릴 수 없나요?
깨진 글자로 저장했더라도 글자 자체가 남아 있으면 깨진 과정을 거꾸로 따라가 되돌릴 수 있는 경우가 있습니다. 다만 저장 시점에 ‘�’나 ‘?’로 바뀐 글자는 그 자리의 정보가 사라진 상태입니다.

이 글에서 소개한 도구

함께 읽으면 좋은 글

원리 해설약 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), 변환할 때 사라지는 문자의 주의점을 정리합니다.

글 읽기 →
원리 해설약 8분

%E3%81%82, \u3042, \343 읽는 법: URL·JSON·Git에서 일본어가 부호가 되는 이유

URL을 복사했더니 ‘%E6%96%87%E5%AD%97’, API 응답을 봤더니 ‘\u6587\u5b57’, Git 파일 이름이 ‘\346\226\207’. 모두 문자 깨짐처럼 보이지만 일본어가 망가진 것이 아니라, 일본어의 바이트나 번호를 영문자와 숫자로 적은 ‘부호’가 그대로 보이는 상태입니다. 이 글에서는 자주 보는 아홉 가지 표기의 구별법과 읽는 법, 어디서 나오는지, 일본어로 표시하는 설정을 정리합니다.

글 읽기 →