Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 模拟中文字符的浏览器URL编码?_Php_Http_Url_Utf 8_Url Encoding - Fatal编程技术网

Php 模拟中文字符的浏览器URL编码?

Php 模拟中文字符的浏览器URL编码?,php,http,url,utf-8,url-encoding,Php,Http,Url,Utf 8,Url Encoding,如果你去这里: 并在源HTML中找到: <dd><a href="/SearchResult.aspx?workprovince=安徽" target="_blank">安徽</a></dd> 所以汉字安徽由浏览器自动将URL编码为%B0%B2%BB%D5 我的问题是如何在PHP中模拟这一点 我试过这些: echo urlencode("安徽"), PHP_EOL; echo rawurlencode("安徽"); 哪个输出: %E5%AE%8

如果你去这里:

并在源HTML中找到:

<dd><a href="/SearchResult.aspx?workprovince=安徽" target="_blank">安徽</a></dd>
所以汉字
安徽由浏览器自动将URL编码为
%B0%B2%BB%D5

我的问题是如何在PHP中模拟这一点

我试过这些:

echo urlencode("安徽"), PHP_EOL;
echo rawurlencode("安徽");
哪个输出:

%E5%AE%89%E5%BE%BD
%E5%AE%89%E5%BE%BD
但是,如果您转到:

这只是错误的页面,
workprovince
变量根本没有正确解码

似乎Chrome和Firefox对汉字的编码方式都不同于urlencode()和rawurlencode()

那么,如何在PHP中模仿他们的做法呢

 echo urlencode(mb_convert_encoding('安徽', 'gb2312', 'utf-8')); //  %B0%B2%BB%D5
 echo urlencode('安徽'); // %E5%AE%89%E5%BE%BD
 echo urlencode(mb_convert_encoding('安徽', 'gb2312', 'utf-8')); //  %B0%B2%BB%D5
 echo urlencode('安徽'); // %E5%AE%89%E5%BE%BD