Punycode
Punycode 是一种将 Unicode 字符串(国际化域名 IDN)转换为 ASCII 兼容字符串的编码,输出以 xn-- 前缀标识。
用途
使非拉丁字符的域名能在仅支持 ASCII 的 DNS 基础设施中解析,同时保持与现有系统的兼容。
机制
将输入 Unicode 码点序列中所有基本 ASCII 字符原样保留,非 ASCII 码点通过广义变量整数编码追加到末尾,用分隔符与插入位置信息恢复顺序。输出全部为 ASCII 小写字母数字与连字符。
用例
- 国际化域名(如 例え.テスト → xn--r8jz45g...)
- IDN 注册与解析
- Email 地址国际化(SMTPUTF8 回退)
- DNS 软件兼容层
示例
- 输入
münchen输出xn--mnchen-3yaEncoding a German city name
常见错误
- Skipping homograph attack checks for IDN names
- Use ICU to detect suspicious mixed scripts before rendering