Punycode 转换

把国际化域名转成 ASCII 的 punycode,或把 xn-- 还原成文字。

域名在 DNS 里存的是 ASCII

DNS 的标签是 ASCII。münchen 或「中文」会存成以 xn-- 开头的 punycode。这一页转换的是这些标签,不是 URL 编码:斜杠、查询和锚点保持原样。要拆开一条已经写好的地址,用 URL 解析。

怎么用

  1. 粘贴域名、完整链接或邮箱。
  2. 选「转成 punycode(ASCII)」或「转成 Unicode」。示例是 https://münchen.example/path 转成 ASCII。
  3. 链接里只转换主机。邮箱里只转换 @ 后面的域名。路径里的中文不动。
  4. 不合法的 xn-- 会报错,不会吐出半截名字。

哪些会变

每个用点分开的标签单独转换。example 这种纯 ASCII 保持不变。münchen.de 变成 xn--mnchen-3ya.de。中文.com 变成 xn--fiq228c.com。协议、路径和查询不做 punycode。再按相反方向做一次就能还原。这是主机名用的 IDNA,不是通用的文字加密。

什么时候用

  • 看证书或 DNS 导出里的 xn-- 到底是哪个名字。
  • 把中文域名放进只接受 ASCII 主机的系统。
  • 在相信一个国际化域名之前,先对一下它是不是你以为的那个。

常见问题

路径为什么还是中文?

Punycode 只用于 DNS 标签,不用于路径。路径如果对方要求编码,用百分号编码。

邮箱 @ 前面没有变。

那是本地部分。只有域名才是主机名。