Punycode 转换 — 中文域名与 xn-- 在线互转
Unicode 域名与 xn-- Punycode 形式互转
在浏览器中处理 · 不上传任何内容
也可以粘贴完整的 URL,只会转换其中的主机名。请把示例换成你自己的域名。
转换方向
Unicode → xn-- 使用浏览器自带的 URL 解析器(UTS #46 IDNA 处理),所以结果就是浏览器实际连接的地址:大写和全角字母会被折叠,分解的字符会被组合。xn-- → Unicode 解码 RFC 3492 Punycode,并检查转换回去后是否得到同样的名字。所有处理都在你的浏览器中完成。
功能简介
Punycode 转换工具可以把国际化域名转换成 DNS 使用的 xn– 形式,也能把 xn– 域名还原成可读的文字。浏览器地址栏里显示的是 bücher.example 或 中文.com 这样的名字,底层实际连接的却是 xn–bcher-kva.example 或 xn–fiq228c.com。当服务器配置、DNS 记录或证书申请表需要 ASCII 版本,或者你想看懂日志里的 xn– 域名时,就可以用它。
使用方法
- 每行输入一个域名。完整的 URL 也可以,只会转换其中的主机名。
- 选择转换方向,或保持“自动”,按行判断。
- 查看每一行的结果或出错原因。
- 复制所有成功的结果,每行一个。
工作原理
- Unicode → xn– 使用浏览器自带的 URL 解析器,所以输出与浏览器实际连接的地址完全一致。它应用 UTS #46(IDNA 兼容处理):先进行大小写和全半角折叠以及规范化,再对每个非 ASCII 标签进行 RFC 3492 Punycode 编码。
- xn– → Unicode 用 RFC 3492 解码每个 xn– 标签,并检查把结果重新编码后是否得到同样的名字;否则该行会被标记为无效。
- 路径、端口、用户信息和末尾的点会先被去掉。完整域名最长 253 个字符。
示例
| 输入 | 结果 |
|---|---|
| bücher.example | xn–bcher-kva.example |
| 中文.com | xn–fiq228c.com |
| xn–fiq228c.com | 中文.com |
| 例子.中国 | xn–fsqu00a.xn–fiqs8s |
| https://bücher.example/path | xn–bcher-kva.example |
| EXAMPLE.com | example.com |
| a b.com | 错误:不允许有空格 |
注册国际化域名后,Web 服务器的 server name 和证书申请里请填写 xn– 形式,名片和宣传材料上则使用可读的形式。粘贴整个列表可以一次转换很多域名,然后一次性复制所有结果。
常见问题
Punycode 是什么?
DNS 只能处理字母、数字和连字符,所以包含 ü、中、日 这类字符的域名要用 Punycode(RFC 3492)编码,并加上 xn-- 前缀。bücher.example 会变成 xn--bcher-kva.example,中文.com 会变成 xn--fiq228c.com。
什么时候需要 xn-- 形式?
DNS 记录、Web 服务器配置、TLS 证书申请和邮件设置通常要求 ASCII 形式。反过来,当日志或请求头里出现 xn-- 域名时,可以把它还原成可读的文字。
大写或全角字符怎么处理?
编码前会按照与浏览器相同的方式(UTS #46)进行折叠,分解的字符也会被组合。域名中不允许的空格和符号会报错。
自动方向是怎么判断的?
每一行单独判断:只含 ASCII 且带有 xn-- 标签的行会被解码,其余的行会被编码。选择方向可以强制只按一个方向转换。
会查询这些域名或把它们发送到别处吗?
不会。转换在你的浏览器中进行,永远不会访问这些域名。