Punycode
Punycodeは、Unicode文字列(国際化ドメイン名)をASCII互換の文字列へ変換するエンコーディングで、出力には xn-- プレフィックスが付く。
目的
非ラテン文字のドメイン名を、ASCIIのみのDNS基盤で解決できるようにし、既存システムとの互換性を保つ。
メカニズム
入力内の基本ASCII符号点はその場に保持され、非ASCII符号点は汎用可変長整数エンコーディングで末尾に追加される。デリミタと挿入位置で順序が復元される。出力は小文字のASCII英数字とハイフンのみで構成される。
ユースケース
- 国際化ドメイン名(例:日本語ドメインが xn--r8jz45g.xn--zckzah に符号化)
- IDNの登録と解決
- 国際化メールアドレス(SMTPUTF8フォールバック)
- DNSソフトウェアの互換レイヤー
例
- 入力
münchenOutputxn--mnchen-3yaEncoding a German city name
よくあるエラー
- Skipping homograph attack checks for IDN names
- Use ICU to detect suspicious mixed scripts before rendering