Punycode,即域名代码,是一种用于表示 Unicode 字符和 ASCII 字符的有限字符集。其主要功能是在 DNS 系统中进行编码和解码。早期的 DNS(域名系统)仅支持英文域名解析。随着国际化域名(IDNs)的推出,为了确保与旧版 DNS 的兼容性,对 IDNs 进行了 Punycode 转码。转码后的 Punycode 由 26 个字母、10 个数字以及“-”组成。
浏览器支持
由于操作系统的核心由英文构成,DNS 服务器的解析也基于英文代码交换,因此 DNS 服务器本身并不直接支持中文域名解析。所有中文域名的解析都需要先转换成 Punycode,然后由 DNS 服务器解析 Punycode。实际上,所谓的浏览器完美支持中文域名,是因为浏览器软件内置了中文域名自动转码功能,无需用户额外安装中文域名转码控件即可完成整个流程。
转码例子
中国.cn → xn--fiqs8s.cn
企鹅.com → xn--hoq754q.com