Punycode 域名转换
国际化域名与 ASCII(punycode)互转:中文、日文、德语变音等域名转成 xn-- 形式,或把 xn-- 域名还原成可读文字,也支持完整 URL 与纯字符串 RFC 3492 编解码。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
结果
这个工具能做什么
- 注册或配置中文、日文、德语变音域名时,先确认它在 DNS 里对应的 xn-- 形式,避免解析配置写错。
- 看到邮件、日志或证书里一串 xn-- 开头的域名,粘进来还原成可读文字,判断是不是钓鱼仿冒域名。
- 做多语言站点时批量核对国际化域名与 ASCII 形式是否一一对应,路径和查询串会原样保留,不用担心被改写。
- 写测试用例或处理 RFC 3492 场景时需要纯字符串的 punycode 编解码,不带点的输入会走原始 bootstring 逻辑。
示例
输入
中文.cn
输出
xn--fiq228c.cn
域名逐段转换:含非 ASCII 字符的标签加 xn-- 前缀并用 punycode 编码,纯 ASCII 标签只做小写化,所以 .cn 保持不变。
常见问题
xn-- 前缀是什么?
它是 IDNA 约定的「这条域名标签是 punycode 编码」标记。浏览器和 DNS 只认 ASCII 域名,所以中文、日文、德语变音这些标签必须先编成 xn-- 形式才能在网络上解析。
为什么纯 ASCII 字符串编码后多了一个结尾的减号?
RFC 3492 的 punycode 输出用「基础字符 + - + 编码部分」的结构,即使没有非 ASCII 字符也会写上分隔用的减号。域名转换时会加上 xn-- 前缀,所以看域名时通常见不到这个尾减号。
中文域名转成 xn-- 之后还能转回来吗?
能。反向转换只把以 xn-- 开头的标签解码回 Unicode,其它标签原样保留,所以来回转换是可逆的。如果编码结果不是合法 punycode,会提示不是合法的 punycode 字符串。
会处理完整 URL 吗?
会。识别为带 scheme 的 URL 时只替换主机名,路径、查询串、锚点、用户名和端口都原样保留,例如 https://münchen.de/weg 只会把主机名转成 xn--mnchen-3ya.de。
转换会发送网络请求吗?
不会。编解码是纯 JavaScript 实现的 RFC 3492 算法,不查询 DNS、不发请求,域名不会离开浏览器。
关键词:punycodeidnidnaxn--域名domain国际化域名中文域名urlrfc 3492