如果你去这里: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
关于php - 模仿浏览器对汉字的 URL 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703559/