EN
返回档案库

案例库 · 软件与 IT · 技术决策 · 2000-2003

Punycode将Unicode域名编码为ASCII,使未改变的DNS能够承载它们

Punycode可将任何Unicode标签可逆地映射为ASCII主机名字符,因此国际化域名无需改变DNS协议。

IETF

那一手

DNS在世界上大多数名字用ASCII书写之前就已建立。标签必须由字母、数字和连字符组成。因此,用中文、阿拉伯文或西里尔文注册名称的人根本无法做到,尽管有数十亿人使用这些文字。

笨拙的修复方法是改变DNS本身,这意味着要更新地球上所有的解析器、服务器和应用程序。Punycode选择了另一条路:一种可逆的编码,将任何Unicode字符串映射到DNS已接受的ASCII字符上。IDNA随后将结果存储在xn--前缀下,使其看起来像普通标签。

由于编码与ASCII兼容,核心DNS无需改变。解析器、缓存和应用程序都继续工作,世界各国的文字终于有了域名。

为什么管用

  • Punycode保持输出在DNS已经允许的ASCII字母、数字和连字符范围内,因此协议无需改动。
  • 它是可逆的,因此解析器可以在不失真的情况下进行映射,确保查找和路由安全。
  • xn--前缀让应用程序能立刻识别出该标签是编码的国际化名称。
  • 因为编码紧凑,它能满足ASCII域名每标签63字符的限制。
值了多少将Unicode编码回主机名已经允许的ASCII字符。聪明

可以搬走什么

当约束阻碍你时,按照旧系统已经接受的格式进行编码,而不是强迫旧系统改变。

后来呢

IDNA(RFC 3490及其后继版本)建立了基于Punycode的应用层规则,RFC 3492在2003年记录了该编码。国际化域名变得广泛可用,尽管xn--形式会出现在用户可见的URL中,而且IDN同形异义滥用利用视觉相似的字符,这促使了更严格的IDNA 2008检查。

资料来源

发现哪里写错了?告诉我们。

同一路聪明