博客
简体中文

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– 域名时,就可以用它。

使用方法

  1. 每行输入一个域名。完整的 URL 也可以,只会转换其中的主机名。
  2. 选择转换方向,或保持“自动”,按行判断。
  3. 查看每一行的结果或出错原因。
  4. 复制所有成功的结果,每行一个。

工作原理

  • 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-- 标签的行会被解码,其余的行会被编码。选择方向可以强制只按一个方向转换。

会查询这些域名或把它们发送到别处吗?

不会。转换在你的浏览器中进行,永远不会访问这些域名。

没找到想要的工具?