把国际化域名转成 ASCII 的 punycode,或把 xn-- 还原成文字。
DNS 的标签是 ASCII。münchen 或「中文」会存成以 xn-- 开头的 punycode。这一页转换的是这些标签,不是 URL 编码:斜杠、查询和锚点保持原样。要拆开一条已经写好的地址,用 URL 解析。
https://münchen.example/path 转成 ASCII。@ 后面的域名。路径里的中文不动。xn-- 会报错,不会吐出半截名字。每个用点分开的标签单独转换。example 这种纯 ASCII 保持不变。münchen.de 变成 xn--mnchen-3ya.de。中文.com 变成 xn--fiq228c.com。协议、路径和查询不做 punycode。再按相反方向做一次就能还原。这是主机名用的 IDNA,不是通用的文字加密。
xn-- 到底是哪个名字。Punycode 只用于 DNS 标签,不用于路径。路径如果对方要求编码,用百分号编码。
那是本地部分。只有域名才是主机名。