模拟浏览器URL编码汉字



如果您去这里:http://hdjob.bjx.com.cn/advancesearch.shtml

并在源html中找到:

<dd><a href="/SearchResult.aspx?workprovince=安徽" target="_blank">安徽</a></dd>

如果将光标放在Chrome或Firefox中的链接上,或者只是将其打开,则URL看起来像这样:

http://hdjob.bjx.com.cn/SearchResult.aspx?workprovince=%B0%B2%BB%D5

因此,汉字安徽由浏览器自动编码为%B0%B2%BB%D5

我的问题是如何模仿PHP?

我尝试了这些:

echo urlencode("安徽"), PHP_EOL;
echo rawurlencode("安徽");

哪个输出:

%E5%AE%89%E5%BE%BD
%E5%AE%89%E5%BE%BD

但是,如果您转到:

http://hdjob.bjx.com.cn/searchresult.aspx?workprovince=�AE 89�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

最新更新