인코딩

Punycode encode/decode

유니코드 문자가 포함된 도메인 이름(IDN)을 ASCII 호환 Punycode 형식(xn--)으로 인코딩, 또는 그 반대로 디코딩.

The DNS system historically only supports ASCII characters, so domain names with Cyrillic, CJK, or other non-ASCII characters (IDN) are encoded as Punycode — an ASCII-compatible form prefixed with xn--. This tool encodes and decodes such domains.

How to use it

Common uses

Things to keep in mind

Visually similar characters from different scripts (like Cyrillic "а" and Latin "a") can form a domain that looks identical to a known brand — this is the basis of homograph phishing.

Not every browser shows decoded Unicode the same way: when a domain label mixes scripts, browsers often deliberately show the raw xn-- form as a warning sign.

이 도구에 대한 아티클: Punycode: 국제화 도메인이 DNS에서 작동하는 방식

자주 묻는 질문

Punycode는 왜 필요한가요?

DNS는 원래 ASCII 문자만 다룰 수 있기 때문에 한글, 키릴 문자 등이 포함된 국제화 도메인(IDN)을 münchen.de처럼 그대로 쓸 수 없습니다. Punycode는 이런 유니코드 도메인을 xn--로 시작하는 ASCII 호환 문자열로 변환해 실제 DNS에서 사용할 수 있게 합니다.

xn--으로 시작하는 도메인을 보면 왜 주의해야 하나요?

서로 다른 유니코드 문자가 화면에서 거의 똑같이 보이는 호모그래프(동형이의) 문제 때문에, 예를 들어 키릴 문자로 만든 가짜 도메인이 실제 브랜드 도메인과 구분이 안 될 수 있습니다. 브라우저 주소창에서 xn--으로 표시되는 도메인은 실제 문자를 한 번 더 확인하는 것이 안전합니다.

입력한 도메인이 서버로 전송되나요?

아니요. 인코딩과 디코딩 모두 브라우저 안에서만 처리되며 어떤 데이터도 서버로 전송되지 않습니다.

링크가 Punycode를 사용하는지 어떻게 알아볼 수 있나요?

인코딩된 도메인은 non-ASCII 문자를 포함하는 각 레이블 앞에 항상 xn-- 접두사가 붙습니다. 주소창이나 메일에서 xn--으로 시작하는 도메인을 본다면 이는 IDN의 표시이므로, 그 뒤에 어떤 텍스트가 숨어 있는지 확인해 보는 것이 좋습니다.

모든 브라우저가 주소창에 키릴 문자를 똑같이 표시하나요?

아니요. 일부 브라우저는 도메인의 모든 문자가 같은 알파벳에 속할 때만 디코딩된 유니코드를 표시하며, 알파벳이 혼합되어 있으면(호모그래프 공격의 징후) 원래 문자 대신 의도적으로 xn-- 표기를 그대로 보여줍니다.

아티클: 인코딩

Base64: 인코딩이 필요한 이유와 작동 방식

Base64가 바이너리 데이터를 ASCII 텍스트로 바꾸는 방법과 실제로 언제 필요한지.

Base32: Base64와 다른 점과 더 편리한 경우

대소문자를 구분하지 않는 Base32 알파벳과 Base64보다 편리한 상황.

URL Encode/Decode: 링크에서의 퍼센트 인코딩

주소와 매개변수의 특수 문자가 %XX 시퀀스로 바뀌는 과정.

HTML Entities: 특수 문자를 안전하게 표시하는 방법

< > & 문자를 이스케이프해야 하는 이유와 이것이 마크업 손상을 막는 방법.

JWT: 토큰 구조와 JWT를 "디코딩"한다는 것의 의미

JWT의 header, payload, signature와, 디코딩이 서명 검증과 다른 이유.

Unicode Escape: \uXXXX 시퀀스의 의미

JSON과 JS 문자열에 나타나는 \u0041 같은 시퀀스가 어디서 오는지, 무엇을 의미하는지.

ROT13과 시저 암호: 단순한 문자 치환

13글자 이동이 ROT13을 자기 역함수로 만드는 이유와 오늘날에도 쓰이는 이유.

모스 부호: 텍스트가 점과 선으로 바뀌는 원리

문자를 점과 선으로 인코딩하는 원리와 모스 부호가 오늘날 어디에 쓰이는지.

Data URI: 이미지를 코드에 직접 삽입해야 할 때

Data URI가 파일 내용을 HTML이나 CSS에 직접 삽입하는 방식과 그럴 만한 가치가 있는 경우.

Gzip + Base64: 텍스트로 전송하기 위한 데이터 압축

압축된 바이너리 데이터를 텍스트 필드에 넣기 전에 Base64로도 인코딩하는 이유.

XML Entities: XML 문서에서 문자 이스케이프하기

이것이 없으면 파싱 중 문서가 깨지는, XML의 다섯 가지 필수 엔티티.