如果你见过中文域名应该会觉得很奇怪,为什么复制出来的域名变成一个很莫名其妙的字符串,比如这个秀恩爱的域名“郝越.我爱你”,实际显示的域名是 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. python 中几个层次的中文编码.md

    转自:[http://swj.me/] 介绍 一直不太喜欢使用命令行,所以去年年底的技术创新中,使用TkInter来开发小工具.结果花费了大量的时间来学习TkInter ui的使用. 最近想整理该工具 ...

  2. lowB三人组算法-冒泡排序-选择排序-插入排序

    冒泡排序 时间复杂度:O(n2)  算法稳定 第一趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到最后位置得出一个第一大数 第二趟,从第一个数开始,相邻两个数比较,大的数交换放后,交换到倒数 ...

  3. replace未全局替换的坑

    今天是名副其实的周六.悠闲了一早上(太阳). 真是人在家中坐,BUG自天上来.哈哈其实也不是自天上来,还是自己之前埋下的雷. 所以修复完线上的bug,我脑中立刻浮现出两件还需要做的事情: 一,就是我现 ...

  4. app-framework学习--Scroller

    Scroller 这个插件同意你创建一个可滚动区域.我们使用的JavaScript滚轮,除非该设备支持 - WebKit的溢出卷轴:触摸.它有很多修复Android版<3和iOS原生的滚动. 创 ...

  5. DjangoORM 执行 python manage.py makemigrations出现 no changes detected

    出现 no changes detected python manage.py makemigrations No changes detected 为什么出现这种情况: 当执行这条命令,他会去找所有 ...

  6. JavaScript日期处理

    一.Date类型 在讲述常见日期问题之前,先梳理一下Date类型的方法. ECMAScript中的Date类型使用自UTC(Coordinated in Universal Time,国际协调时间)1 ...

  7. Angular 回到顶部 滚动到特定的页面位置

    $timeout(function() { // $location.hash('bottom'); // $anchorScroll(); // var a=angular.element(&quo ...

  8. .def文件如何编写

    DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明:另外一种方式是采用模块定义(.def) 文件声明. 规则是:1.首先创建 一个DL ...

  9. PAT 1121 Damn Single[简单]

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

  10. Java基础知识陷阱(四)

    本文发表于本人博客. 今天我们来说说关于java继承以及反射有关的问题,大家先看下下面代码,试问可以编译通过不,为什么具体说说原因? public class Test{ public static ...