%E3%81%82, \u3042, \343 읽는 법: URL·JSON·Git에서 일본어가 부호가 되는 이유
URL을 복사했더니 ‘%E6%96%87%E5%AD%97’, API 응답을 봤더니 ‘\u6587\u5b57’, Git 파일 이름이 ‘\346\226\207’. 모두 문자 깨짐처럼 보이지만 일본어가 망가진 것이 아니라, 일본어의 바이트나 번호를 영문자와 숫자로 적은 ‘부호’가 그대로 보이는 상태입니다. 이 글에서는 자주 보는 아홉 가지 표기의 구별법과 읽는 법, 어디서 나오는지, 일본어로 표시하는 설정을 정리합니다.
부호는 문자 깨짐이 아니라 ‘일본어를 적는 방식의 하나’
문자 깨짐은 문자 코드를 혼동해 다른 글자로 읽어 버린 상태입니다. 반면 %E3%81%82나 \u3042는 영문자와 숫자만 쓸 수 있는 곳에 일본어를 적기 위해 일부러 영문자와 숫자로 바꾼 것입니다. 표기 규칙을 알면 한 글자도 빠짐없이 일본어로 되돌릴 수 있습니다.
크게 나누면 ‘글자의 번호(유니코드 코드 포인트)’를 적는 방식과 ‘글자의 바이트(UTF-8 등으로 저장했을 때의 숫자)’를 적는 방식이 있습니다. 히라가나 ‘a’는 유니코드 번호가 U+3042(10진수로 12354), UTF-8 바이트가 E3 81 82입니다. 이 두 숫자를 기억해 두면 어떤 표기인지 바로 알 수 있습니다.
아홉 가지 표기 조견표
| 표기 | 예(‘文字’ 등) | 내용 | 자주 나오는 곳 |
|---|---|---|---|
| URL 인코딩 | %E6%96%87%E5%AD%97 | UTF-8 바이트 | URL, 검색어, 다운로드한 파일 이름 |
| URL 인코딩(옛 형태) | %95%B6%8E%9A | Shift_JIS 바이트 | 오래된 일본 사이트·게시판의 URL |
| 유니코드 이스케이프 | \u6587\u5b57 | 유니코드 번호(16진) | JSON, JavaScript, API 응답 |
| 8진수 이스케이프 | \346\226\207\345\255\227 | UTF-8 바이트(8진) | git status, git diff의 파일 이름 |
| 바이트 이스케이프 | \xe6\x96\x87\xe5\xad\x97 | UTF-8 바이트(16진) | Python의 bytes, 로그, 오류 메시지 |
| HTML 문자 참조 | 文字 / 文字 | 유니코드 번호(10진·16진) | HTML 소스, RSS, HTML 메일 |
| Quoted-Printable | =E6=96=87=E5=AD=97 | UTF-8 바이트 | 메일 본문의 소스 |
| Punycode | xn--wgv71a119e.jp | 일본어 도메인을 변환한 것 | 일본어 도메인의 URL(日本語.jp) |
| Base64 | 5paH5a2X5YyW44GR | UTF-8 바이트를 64종류의 글자로 나타낸 것 | 메일 첨부·본문, API 데이터 |
표의 예는 문자 깨짐 복원·해독 도구의 ‘부호 읽기’에 넣어 확인한 것입니다. Base64 예는 일본어로 ‘문자 깨짐’을 뜻하는 단어로, 나머지는 ‘文字’(Punycode는 ‘日本語.jp’)로 돌아옵니다. 글 안에 여러 표기가 섞여 있어도 각각 찾아서 읽습니다.
URL의 %E3%81%82: 일본어 URL을 복사했을 때
URL에는 영문자와 숫자, 일부 기호만 쓸 수 있으므로 일본어는 UTF-8 바이트를 ‘%’와 16진수 두 자리로 적습니다. 일본어 한 글자는 UTF-8로 3바이트이므로 %XX 세 개가 한 글자입니다. ‘문자 깨짐’을 뜻하는 네 글자 일본어 단어는 ‘%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91’로 36자가 됩니다.
- 브라우저 주소창에는 일본어로 표시되어 있어도 복사해 채팅이나 메일에 붙여넣으면 %XX 형태가 된다
- %E3로 시작하는 것은 히라가나·가타카나, %E4~%E9로 시작하는 것은 한자인 경우가 많다
- %82나 %83이 많고 %XX 두 개가 한 글자로 보이는 것은 Shift_JIS로 쓴 오래된 URL일 가능성이 있다
- ‘+’는 공백을 나타낼 때가 있다(검색 폼에서 보낸 URL 등)
URL을 남에게 보낼 때는 %XX 형태 그대로가 더 확실합니다. 일본어로 되돌린 URL은 받는 앱에 따라 링크가 중간에 끊길 수 있습니다.
JSON의 \u3042, Git의 \343, Python의 \xe3
프로그래밍에서는 일본어를 그대로 출력하지 않고 부호로 적는 일이 많습니다. 각각 표시 설정으로 일본어로 바꿀 수 있습니다.
- JSON의 \u3042: 유니코드 번호를 16진수 네 자리로 적은 것. Python의 JSON 출력은 ensure_ascii=False를 붙이면 일본어 그대로 나온다. 이모지는 ‘🍣’(🍣)처럼 두 개가 한 쌍으로 적힌다
- Git의 \343\201\202: git status 등에서 일본어 파일 이름이 8진수로 표시된 것. git config --global core.quotepath false를 설정하면 일본어로 표시된다
- Python의 \xe3\x81\x82: bytes 형을 그대로 표시한 것. .decode('utf-8')로 문자열로 바꾸면 일본어가 된다
- HTML의 あ, あ: 유니코드 번호를 10진수나 16진수로 적은 것. 브라우저에서는 히라가나 ‘a’로 표시되지만, 소스나 RSS를 텍스트로 보면 부호 그대로 보인다
xn--로 시작하는 도메인은 국제화 도메인
‘日本語.jp’ 같은 일본어 도메인은 DNS 구조상 영문자와 숫자로 변환해 다룹니다. 이 변환 방식이 Punycode이고, 변환한 것에는 ‘xn--’가 붙습니다. ‘xn--wgv71a119e.jp’는 ‘日本語.jp’입니다.
브라우저는 모양이 비슷한 글자를 이용한 사칭을 막기 위해 일본어 도메인을 일부러 xn-- 형태로 표시할 때가 있습니다. 모르는 xn-- 도메인에서 온 메일이나 링크는 일본어로 되돌려 정말 그 도메인이 맞는지 확인하면 안심입니다.
부호가 아니라 ‘縺’, ‘ã’ 같은 진짜 문자 깨짐이 섞여 있을 때는 문자 깨짐 패턴 조견표에서 패턴을 확인하세요. 메일 제목의 =?UTF-8?B?…?=도 같은 종류로, 메일 제목이 깨지는 원인과 해결법에서 자세히 설명합니다.
자주 묻는 질문
- URL의 %E3%81%82를 일본어로 되돌리려면 어떻게 하나요?
- % 뒤의 16진수 두 자리를 1바이트로 모아 UTF-8로 읽습니다. %E3%81%82는 히라가나 ‘a’입니다. 일본어는 %XX 세 개가 한 글자입니다. 문자 깨짐 복원·해독 도구의 ‘부호 읽기’에 붙여넣으면 한꺼번에 되돌릴 수 있습니다.
- JSON의 \u3042는 무엇인가요?
- 유니코드 번호를 16진수 네 자리로 적은 유니코드 이스케이프이며, \u3042는 히라가나 ‘a’입니다. JSON에서는 일본어를 이 형태로 출력하는 설정이 자주 쓰입니다. 이모지는 🍣처럼 두 개가 한 쌍으로 한 글자를 나타냅니다.
- Git에서 일본어 파일 이름이 \343\201\202처럼 표시됩니다.
- Git이 일본어 파일 이름의 UTF-8 바이트를 8진수로 표시하고 있습니다. git config --global core.quotepath false를 설정하면 git status 등에서 일본어 그대로 표시됩니다.
- xn--로 시작하는 URL은 위험한가요?
- xn--는 일본어 등의 국제화 도메인을 영문자와 숫자로 변환했다는 표시이며, 그것만으로 위험한 것은 아닙니다. 다만 모양이 비슷한 글자를 이용한 사칭에도 쓰이므로 일본어로 되돌려 도메인 이름을 확인하면 안심입니다.
이 글에서 소개한 도구
함께 읽으면 좋은 글
문자 깨짐 패턴 조견표: 縺, ã, ‚, ƒ, $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), 변환할 때 사라지는 문자의 주의점을 정리합니다.
글 읽기 →