如果你到这里: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

因此,浏览器会自动将中文字符安徽的url编码为%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=%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

07-26 04:21