Punycode编解码
中文域名与 Punycode 双向互转
这个工具能做什么
Punycode 编解码工具解决的是国际化域名(IDN)在 DNS 层面的可识别性问题。DNS 系统底层只认 ASCII 字符,而「中文.com」「淘宝.网址」这类含中文、日文、Emoji 的域名无法被直接解析,必须先转换成以 xn-- 开头的纯 ASCII 形式才能提交注册、配置解析或参与网络通信。这个工具做的就是中文域名等 IDN 与 xn-- 编码之间的双向互转:输入 Unicode 域名得到 punycode 编码结果,输入 xn-- 域名还原回可读文字。它会按点号自动拆分各级标签逐段处理,纯 ASCII 的标签(如顶级域 com)原样保留,省去你手工分割和拼接的麻烦。
需要说明的是,Punycode 并不是简单的字符查表映射,而是 RFC3492 定义的 bootstring 算法的一个参数化实例。编码时,算法先把输入里所有 ASCII 基本码点原样输出,再用一段增量序列来记录非 ASCII 码点应插入的位置和值;这段增量用广义可变长整数(generalized variable-length integer)编码,配合一个随处理进度自适应调整的 bias 偏差值,使得码点越集中、增量越小、编码越紧凑。解码则是这一过程的逆运算,从末段增量反推出每个非 ASCII 字符的原始位置。与 UTF-8 把码点直接编成字节、Base64 把二进制铺成可打印字符不同,Punycode 是专为域名标签设计的、结果尽量短的紧凑编码,而 xn-- 只是 IDNA 规范约定的 ACE 前缀,用来标识「这是一个 punycode 编码的标签」。
最典型的场景是域名注册与解析。比如你想注册「测试.com」,注册商和 DNS 记录里需要填的是编码后的 xn--0zwm56d.com,用本工具把中文域名转过去核对无误再提交即可;反过来,当你在服务器访问日志、邮件头或证书里看到一串 xn-- 开头的陌生域名,粘进来解码就能立刻看清它对应的真实中文名。另一个常见用途是安全排查:钓鱼站常用形近的 IDN 域名仿冒知名品牌(所谓同形异义攻击),把可疑域名做 idn 编码或解码还原,能帮你判断它到底是不是仿冒。写域名工具、爬虫或做批量 IDN 处理时,也可以先在这里手动验证单个标签的编码是否正确,再落到代码里。
使用时要注意 Punycode 只是完整 IDN 处理链条中的一环。规范的 IDNA/UTS46 流程在编码前还会做大小写折叠、Unicode 规范化(NFC)等预处理,而本工具只执行纯粹的 Punycode 算法转换、不做 IDNA 映射,因此当你输入大写字母或未规范化的字符时,得到的结果可能和浏览器地址栏最终显示的不完全一致,建议先自行转小写并规范化。另外别把整个网址一次性丢进去按整体编码——Punycode 是以标签为单位的,必须按点号分割,纯 ASCII 标签不需要也不会加 xn-- 前缀。Emoji 域名技术上能正常编码解码,但绝大多数顶级域并不接受 Emoji 注册,能转出结果不等于能真的用。所有运算都在浏览器本地完成,域名内容不会上传。
Punycode编解码是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“punycode”、“域名编码”、“idn编码”,说的都是这个。
常见使用场景
- 注册中文域名前把「中文.com」转成 xn-- 形式提交注册商
- 解码日志或邮件头里 xn-- 开头的域名核对真实中文名
- 配置 DNS 解析时确认 IDN 域名的 ACE 编码是否正确
- 排查钓鱼站时还原 Punycode 判断是否同形异义仿冒
- 写域名工具前手动验证单个标签的编码结果
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。