使用 PHP 进行中文域名编码

国际化域名。

比如中文域名,在浏览器地址栏以中文显示,但实际是以 punycode 进行解析和访问。服务器设置 server_name 时不能直接设置中文域名,而是设置中文域名对应的 punycode。

PHP 提供的 IDN 函数可以把非英文域名转换为 punycode,详见 PHP IDN Functions

idn_to_ascii 将域名转换为 IDNA ASCII 编码
idn_to_unicode idn_to_utf8 别名
idn_to_utf8 将域名 从 ASCII 编码转换为 Unicode 编码

代码示例

$xn_idn = idn_to_ascii('郝越.我爱你');
echo $xn_idn; // xn--vq3al9d.xn--6qq986b3xl

$idn = idn_to_utf8($xn_idn);
echo $idn; // 郝越.我爱你

使用 IDN 函数之前需要先安装 php5-intl 扩展:

sudo apt-get install php5-intl

作者: 袖之欢

科技改变生活,编程改变世界。

发表评论

电子邮件地址不会被公开。 必填项已用*标注