模仿浏览器URL汉字编码?

Mimic browser URL encoding for Chinese characters?

如果你去这里:http://hdjob.bjx.com.cn/AdvanceSearch.shtml

并在源代码中找到 HTML:

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

如果您将光标放在 Chrome 或 Firefox 中的 link 上,或者直接打开它,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