piapia123
zh

Punycode(IDN)转换

网络

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

把中文、日文、德文等国际化域名转成 Punycode(xn--r8jz45g.jp),或反过来把一串 xn-- 还原成能读的原文。浏览器只会帮你转一个方向 —— 输入中文域名它能变成 xn--,但拿到一串 xn-- 它不会告诉你那是什么,而这恰恰是更常见的需求:收到一个乱码域名,得先知道它是什么才敢点。结果里会逐标签对照,直接看出是哪一段被转成了什么。另外两项检查也在这里:标签超过 63 字节(DNS 的长度上限,中文域名很容易顶到)会标出来,混用文字系统的域名(аpple 里那个看着像 a 的西里尔字母)会提示同形异义字风险。

功能

  • 两个方向:Unicode 域名编码成 xn--,或把 xn-- 还原成原文
  • 逐标签对照,一眼看出是哪一段被转成了什么
  • 完整地址只转主机名,协议、路径、端口、查询字符串原样保留
  • 标签超过 63 字节时给出 DNS 长度警告
  • 混用拉丁字母与西里尔/希腊字母的域名提示同形异义字钓鱼风险
  • 中文输入法打出的句号「。」也当点号处理
  • 与浏览器的 IDN 实现结果逐字一致(用运行时的转换结果交叉验证过)

使用方法

  1. 把域名或完整地址粘进输入框 —— 带 xn-- 的按解码处理,其余按编码
  2. Unicode 与 Punycode 两种形式都会给出
  3. 需要时手动指定方向
  4. 点某一行的复制按钮取走结果

常见问题

Punycode 是什么,为什么需要它?
DNS 只认 ASCII 字符,所以中文、日文域名要先按 RFC 3492 编码成 xn-- 开头的一串字符才能解析。浏览器地址栏里显示的是可读的原文,但实际查询、证书里用的都是 Punycode 形式 —— 排查域名解析问题、申请证书、看邮件头时,你需要看到的就是这一串。
同形异义字是什么风险?
不同文字系统里有形状几乎相同的字母,比如西里尔的 а(U+0430)和拉丁的 a。攻击者可以注册 аpple.com,屏幕上和 apple.com 看不出差别,用来做钓鱼。工具会在域名混用拉丁字母与西里尔/希腊字母时提示 —— 纯拉丁或纯西里尔的域名不会误报。
为什么标签长度会超限?
DNS 规定单个标签最长 63 字节,而 Punycode 编码之后的长度大约是原文的两倍:一个汉字 3 个字节,编码后平均要 4-5 个字符。所以一个 15 个汉字的标签就可能超过 63 字节,这样的域名浏览器不会拦,是解析的时候失败。
会记录我输入的域名吗?
不会。转换全在浏览器里完成,页面不发送任何请求 —— 域名本身就可能泄露信息(比如内部系统的主机名),它不会离开这台设备。

相关工具