编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 编码解码 / Punycode编解码

Punycode编解码

中文域名与 Punycode 双向互转

输入(域名)
结果

这个工具能做什么

Punycode 编解码工具解决的是国际化域名(IDN)在 DNS 层面的可识别性问题。DNS 系统底层只认 ASCII 字符,而「中文.com」「淘宝.网址」这类含中文、日文、Emoji 的域名无法被直接解析,必须先转换成以 xn-- 开头的纯 ASCII 形式才能提交注册、配置解析或参与网络通信。这个工具做的就是中文域名等 IDN 与 xn-- 编码之间的双向互转:输入 Unicode 域名得到 punycode 编码结果,输入 xn-- 域名还原回可读文字。它会按点号自动拆分各级标签逐段处理,纯 ASCII 的标签(如顶级域 com)原样保留,省去你手工分割和拼接的麻烦。

需要说明的是,Punycode 并不是简单的字符查表映射,而是 RFC3492 定义的 bootstring 算法的一个参数化实例。编码时,算法先把输入里所有 ASCII 基本码点原样输出,再用一段增量序列来记录非 ASCII 码点应插入的位置和值;这段增量用广义可变长整数(generalized variable-length integer)编码,配合一个随处理进度自适应调整的 bias 偏差值,使得码点越集中、增量越小、编码越紧凑。解码则是这一过程的逆运算,从末段增量反推出每个非 ASCII 字符的原始位置。与 UTF-8 把码点直接编成字节Base64二进制铺成可打印字符不同,Punycode 是专为域名标签设计的、结果尽量短的紧凑编码,而 xn-- 只是 IDNA 规范约定的 ACE 前缀,用来标识「这是一个 punycode 编码的标签」。

最典型的场景是域名注册与解析。比如你想注册「测试.com」,注册商和 DNS 记录里需要填的是编码后的 xn--0zwm56d.com,用本工具把中文域名转过去核对无误再提交即可;反过来,当你在服务器访问日志、邮件头或证书里看到一串 xn-- 开头的陌生域名,粘进来解码就能立刻看清它对应的真实中文名。另一个常见用途是安全排查:钓鱼站常用形近的 IDN 域名仿冒知名品牌(所谓同形异义攻击),把可疑域名做 idn 编码或解码还原,能帮你判断它到底是不是仿冒。写域名工具、爬虫或做批量 IDN 处理时,也可以先在这里手动验证单个标签的编码是否正确,再落到代码里。

使用时要注意 Punycode 只是完整 IDN 处理链条中的一环。规范的 IDNA/UTS46 流程在编码前还会做大小写折叠、Unicode 规范化(NFC)等预处理,而本工具只执行纯粹的 Punycode 算法转换、不做 IDNA 映射,因此当你输入大写字母或未规范化的字符时,得到的结果可能和浏览器地址栏最终显示的不完全一致,建议先自行转小写并规范化。另外别把整个网址一次性丢进去按整体编码——Punycode 是以标签为单位的,必须按点号分割,纯 ASCII 标签不需要也不会加 xn-- 前缀。Emoji 域名技术上能正常编码解码,但绝大多数顶级域并不接受 Emoji 注册,能转出结果不等于能真的用。所有运算都在浏览器本地完成,域名内容不会上传。

Punycode编解码是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“punycode”、“域名编码”、“idn编码”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

Punycode 和 Base64、URL 编码有什么区别?
三者用途完全不同。Base64 把任意二进制铺成 64 个可打印 ASCII 字符,URL 编码用 %XX 转义特殊字符,而 Punycode 是专为域名标签设计的紧凑编码,用 bootstring 算法把 Unicode 码点压成尽量短的 ASCII,并带 xn-- 前缀,只用于 IDN。
为什么编码后的域名是 xn-- 开头?
xn-- 是 IDNA 标准规定的 ACE(ASCII Compatible Encoding)前缀,用来告诉 DNS 解析器和浏览器「这个标签是 Punycode 编码,需要解码后展示」。Punycode 算法本身并不产生这个前缀,加 xn-- 是 IDNA 层的约定。
支持 Emoji、日文、韩文域名吗?
支持,任何 Unicode 字符都能编解码,包括 Emoji、日文假名、韩文谚文。但能否真正注册取决于对应顶级域的政策,多数 TLD 不接受 Emoji 域名,能转出编码不代表能注册使用。
为什么我编码的结果和浏览器地址栏显示的不一样?
浏览器在编码前会执行 IDNA/UTS46 预处理,包括大小写折叠和 Unicode 规范化,本工具只做纯 Punycode 算法转换、不做这些映射。输入含大写或未规范化字符时就会出现差异,先转成小写并做 NFC 规范化即可对齐。
可以把整个网址直接丢进去编码吗?
不能整体编码,Punycode 以点号分隔的单个标签为单位处理。本工具会自动按点拆分,对含非 ASCII 字符的标签编码,纯 ASCII 标签(如 com、www)原样保留、不加前缀。

相关工具

查看全部「编码解码」工具 →

相关名词解释