如果你见过中文域名应该会觉得很奇怪,为什么复制出来的域名变成一个很莫名其妙的字符串,比如这个秀恩爱的域名“郝越.我爱你”,实际显示的域名是 http://xn--vq3al9d.xn--6qq986b3xl/ 这就叫 Punycode 具体查看 https://www.punycoder.com/

Punycode 是一个根据 RFC 3492 标准而制定的编码系统,主要用于把域名从地方语言所采用的 Unicode 编码转换成为可用於 DNS 系统的编码。郝越.我爱你域名不是常规的字符,所以域名机构规定把他 转码成了 http://xn--vq3al9d.xn--6qq986b3xl/ 类似的还有 āáǎà.com 转码成了 xn--0cab9g30b.com/

在百度搜索“中文域名转码”,进入在线编码的网站,提交中文域名,即可将中文域名转为 punycode 或者是 GBK 编码。在 nginx 配置文件中使用:

//参考https://blog.zhengxianjun.com/2015/05/chinese-domain-and-nginx-conf/

server {

listen 80;

server_name xn--vq3al9d.xn--6qq986b3xl;

index index.php;

root /alidata/www/love;

}

在 PHP 中可以使用如下方法转换

#sudo apt-get install php5-intl

$xn_idn = idn_to_ascii('郝越.我爱你');

echo $xn_idn; // xn--vq3al9d.xn--6qq986b3xl

$idn = idn_to_utf8($xn_idn);

echo $idn; // 郝越.我爱你

如果不用扩展,可以使用 true/punycode 包 https://github.com/true/php-punycode 安装 composer require true/punycode:~2.0

// Import Punycode

use TrueBV\Punycode;

$Punycode = new Punycode();

var_dump($Punycode->encode('renangonçalves.com'));

// outputs: xn--renangonalves-pgb.com

var_dump($Punycode->decode('xn--renangonalves-pgb.com'));

// outputs: renangonçalves.com

然后推荐一个阿里出品的 AnyProxy ,它是一个开放式的HTTP代理服务器,平常除了 fiddler 抓包,这个也很方便。

使用方法如下:

node.js通过npm install -g anyproxy 安装AnyProxy 启用https代理

$ anyproxy -i --rule=wxdumpchange_score/wxdump.js

[AnyProxy Log][2018-02-27 11:12:46]: Http proxy started on port 8001

[AnyProxy Log][2018-02-27 11:12:46]: web interface started on port 8002

移动端通过wifi代理启用anyproxy的服务器的ip,端口默认为8001

移动端要安装证书才能使用,不然无法拦截https请求 然后移动端通过浏览器进入 ip:8002 点击下载crt证书 进行安装

ios要在设置 通用 关于本机 最下面的证书信任里面吧anyproxy打开

最后测试下 curl http://httpbin.org/user-agent --proxy http://127.0.0.1:8001 浏览器访问http://127.0.0.1:8002 ,界面上能看到刚才的请求信息

如何实现Punycode中文域名转码的更多相关文章

  1. IIS 7.5绑定中文域名转码启动站点报“值不在预期的范围内”

    问题现象 IIS 7.5在绑定中文域名转码后,启动站点会出现[值不在预期的范围内]: 解决方案 此问题是由于中文域名绑定错误导致的,IIS 7.5针对中文域名会自动转换为punycode码,所以不需要 ...

  2. Nginx中文域名配置

    Nginx虚拟主机上绑定一个带中文域名,比如linuxeye.中国,浏览器不能跳转. why? 因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中 ...

  3. apache支持中文域名绑定,apache支持中文域名绑定,教你怎样让apache支持中文域名绑定

    摘要:apache支持中文域名绑定,apache支持中文域名绑定,教你怎样让apache支持中文域名绑定,根据本人实际经验,叫你如何让apache支持中文域名绑定,绝对管用的让apache支持中文域名 ...

  4. CNAME关联githubPage域名及中文域名,创建个人网站

    对于前端开发来说,部署一个自己的个人网站部署服务器等比较麻烦,如果只是做静态页面的展示GitHubPage完全够用,而且有300M免费的空间,完全满足需求. 首先你要有GitHubPage项目,具体怎 ...

  5. Nginx配置中文域名

    今天碰到一个好玩的问题,还以为是nginx的缓存,各种清理就差把nginx卸载了,后来想想不对应该是中文域名的问题,对中文进行编码,搞定,如下: ... server { listen 80; ser ...

  6. 中文域名 & 原理剖析

    中文域名 & 原理剖析 https://zh.wikipedia.org/wiki/中文域名 原理 利用浏览器的对字符编码的转换算法,实现 unicode 字符显示! 国际化域名: 就是一个普 ...

  7. 对 url 中含有的中文进行转码操作

    对 url 中含有的中文进行转码操作 一般情况下,将带有中文的 url 拷贝到开发工具,开发工具都会有相应的转码(自动转码), 现在大部分的浏览器也可以对含有中文的 url 进行转码(自动转码) 情景 ...

  8. PHP5.4以下的json_encode中文被转码的问题

    PHP的json_encode中文被转码的问题   在php5.2中做json_encode的时候.中文会被unicode编码, php5.3加入了options参数, 5.4以后才加入JSON_UN ...

  9. js生成中文二维码

    http://www.cnblogs.com/xcsn/archive/2013/08/14/3258035.html http://www.jb51.net/article/64928.htm 使用 ...

随机推荐

  1. Mustache 中的html转义问题处理

    避免在使用Mustache引擎是发生html字符转义 1,模板代码示例:    var xml= " <?xml version="1.0" encoding=&q ...

  2. Java 之NIO

    1. NIO 简介 Java NIO(New IO)是从1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API; NIO 与原来的IO有同样的作用和目的,但是使用的方式完全不同 ...

  3. Hive简介及使用

    一.Hive简介 1.hive概述 Apache Hive™数据仓库软件有助于使用SQL读取,编写和管理驻留在分布式存储中的大型数据集. 可以将结构投影到已存储的数据中.提供了命令行工具和JDBC驱动 ...

  4. Flask路由系统与模板系统

    路由系统 @app.route('/user/<username>') @app.route('/post/<int:post_id>') @app.route('/post/ ...

  5. jQuery -&gt; 使用andSelf()来包括之前的选择集

    版权声明:本文为博主原创文章.转载请注明出处 https://blog.csdn.net/FeeLang/article/details/26254793 当我们使用Destructive Metho ...

  6. Elasticsearch.js 发布 —— 在Node.js和浏览器中调用Elasticsearch(1)

    继PHP.Ruby.Python和Perl之后,Elasticsearch最近发布了Elasticsearch.js,Elasticsearch的JavaScript客户端库.可以在Node.js和浏 ...

  7. LoadJS

    LoadJS是一个微小的异步加载器为现代浏览器(711字节). https://github.com/muicss/loadjs 介绍 LoadJS是一个微小的异步加载库的现代浏览器(IE9 +). ...

  8. nginx映射文件服务器文件夹

    nginx映射文件服务器文件夹 普通用户A安装的nginx,yum源搭建文件服务器,新建普通用户B,其主目录是文件服务器需要访问的目录 普通用户A启动nginx无法访问B用户的文件服务器目录,提示40 ...

  9. PAT 1121 Damn Single[简单]

    1121 Damn Single (25 分) "Damn Single (单身狗)" is the Chinese nickname for someone who is bei ...

  10. C++实现去掉string字符串前后的空白字符

    C++标准库提供的字符串类string没有提供类似CString中Trim方法,该方法功能为去除字符串前后的空白字符.利用string自身一些方法可以很容易实现该功能. 如下: void Trim(s ...