Why/how 浏览器是否决定 ☃.net 去 xn--n3h.net
Why/how does the browser decide ☃.net goes to xn--n3h.net
如果我们输入 firefox 或 chrome
它带我们去
的镜像
我不明白的是 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 字符之后添加一个。
可以在 this page over at the w3 site, and in RFC 3987. For details on how Punycode actually encodes labels, see the Wikipedia page 中找到更多详细信息。
如果我们输入 firefox 或 chrome
它带我们去
的镜像我不明白的是 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 字符之后添加一个。
可以在 this page over at the w3 site, and in RFC 3987. For details on how Punycode actually encodes labels, see the Wikipedia page 中找到更多详细信息。