跳到主内容
UniKit

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

同类工具