如果我们输入 firefox 或 chrome
http://☃.net/
它带我们去
http://xn--n3h.net/
的镜像
我不明白的是unicode雪人可以按照什么规则解码为
xn--n3h
,它看起来不像utf-8或urlencoding。
我想我在 python3 中闲逛时发现了一个提示,因为:
>>> '☃'.encode('punycode')
b'n3h'
但是我还是不明白
xn--
部分。域名如何国际化,标准是什么以及这些内容记录在哪里?
它使用一种称为 Punycode 的编码方案(正如您从所做的 Python 测试中已经发现的那样),能够以纯 ASCII 格式表示 Unicode 字符。
包含 Unicode 字符的每个标签(由点分隔,因此
get.me.a.coffee.com
有五个标签)均以 Punycode 进行编码,并以字符串 xn--
为前缀。
标签编码首先复制所有 ASCII 字符,然后附加编码后的 Unicode 字符。 Unicode 字符始终位于标签中最后一个
-
之后,因此如果需要,可在 ASCII 字符之后添加一个。
更多详细信息可以在 w3 站点的此页面和RFC 3987中找到。有关 Punycode 如何实际编码标签的详细信息,请参阅维基百科页面。
我讨厌香蕉。香蕉讨厌我