Fork me on GitHub

关于解析中文域名的解决方法

【这里有一个坑】

你为域名配置的DNS[域名服务器]必须是支持中文域名的!!

中文域名分两类

  • 一类是域名后缀为英文字母的国际中文域名和别国中文域名,比如:中文.com,中文.net,中文.biz,中文.cc,中文.hk,中文.tm,中文.tv,中文.tw;
  • 一类是域名后缀为中文的纯中文国内中文域名,比如:中文域名.中国,中文域名.公司,中文域名.网络;

解析中文域名的解决方法

因为我需要将中文域名绑定到我的博客GitHub Page页面,故主要解决跟我相似的问题,但是将中文域名解析到其他服务器上也是同样的原理的

解析中文域名原理

中文域名在解析的时候,需要先转换为 xn–fiq228c.com或xn–fiq228c.cn形式的ASCII码,这种编码称为PunyCode。

纯中文域名不被标准的解析服务器支持,要实现对这种纯中文域名的正确访问,ISP需要做相应的修改,以便能够正确解析中文域名。

同时CNNIC也提供了专用服务器,用户只要将浏览器的DNS设置指向这台服务器,它同样可以完成对纯中文域名的正确解析。

另外,考虑到现在有些ISP还没有做修改,而有些用户又不方便将DNS设置指向CNNIC提供的服务器,纯中文域名会被加上.cn后缀,即对每一个纯中文域名同时有两种形式:纯中文域名和纯中文域名.CN, 如:”中文域名.网络”和”中文域名.网络.CN”。这样即使ISP还没有做相应的修改,用户也可以正确使用中文域名。

解决方法:

【】【】【】【】【】【】【】【】【】【】【】

【】将中文域名转换为Punycode标准编码的字符串【】

【】【】【】【】【】【】【】【】【】【】【】

具体步骤

  1. 在这里进行中文域名在线转码,获得PunyCode编码;
  2. 将获得的PunyCode编码填入GitHub Page所在的仓库的CNAME文件中;
  3. 同步本地与云上的仓库,ok;

PureCode

英文域名在IIS或Apache中的虚拟主机设置,可以直接使用英文域名,如webmasterhome.cn。

中文域名在IIS或Apache中应如何设置主机头呢?如”中国站长之家.com”,

答案是:在进行设置之前要先把中文域名转化成为PunyCode编码,然后在主机头设置里面填上中文域名所对应的PunyCode编码(xn–fiqsC146Ah4ex80Cro7A.com)便可。

新的国际化域名的标准在网域名称编码上,为了保留向下兼容性及不影响现有的应用程序协议,因此将多国语言域名转成ASCII编码,而这种编码称为『punycode』。

因为经过 Nameprep处理过的国际化域名是以 Unicode 序列的形式表示的。但现有的 DNS系统只支持用 ASCII字符表示的域名,所以要对 Unicode 序列进行 ACE (ASCII-compatible encoding) 编码,把 Unicode序列表示的域名转换成 ASCII 字符串表示的ACE 域名。

PunyCode是一种专为国际化域名而设计的高效ACE 编码方式。它可以在Unicode序列和ASCII 字符串之间进行唯一的和可逆的转换。转换的过程中,Unicode 序列中的ASCII字符保持不变,国际化字符则用字母和数字来表示。它的实质是一种用数量有限的基本字符(字母和数字)来唯一地表示大字符集(Unicode)中的字符的通用算法。域名中的字符,包括 ASCII 码和 Unicode 码,都是作为整数进行处理。

PunyCode则是将一个经过Nameprep处理过的IDN,从一个8位的编码的形式转换为7位编码的形式。目前Internet DNS一向是7位ASCII编码的环境,经过这个PunyCode转码程序,便将IDN从一个8 位的IDN转换为与现有DNS环境兼容的编码。

在DNS服务器方面,需要将IDN以PunyCode的编码形式来设定。因为PunyCode本身就是一种7位的编码,与ASCII编码完全兼容,所以可适用设定于目前所有可用的DNS版本, 也就是说可以不需要为了设定PunyCode而重新安装BIND新版本。但是若是需要使用DNAME指令来设定资源记录(Resource Record),则需先提升为BIND9的版本。

Nameprep

Nameprep 是“A Stringprep Profile for Internationalized Domain Names (IDN)”,它描述了如何准备一个多语种域名,包括对一个域名字段进行映射、正规化以及禁止性过滤等等操作。

Adhere to original technology sharing, your support will encourage me to continue to create!