php - 模仿浏览器对汉字的 URL 编码?

标签 php http url utf-8 url-encoding

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

相关文章:

php - API 安全 : how to restrict access by domain?

python - 在 Python 中通过打开的套接字发出 HTTP 请求

javascript - 在 URL 中使用 JavaScript 中的两种哈希 JSON 字符串

codeigniter - SEO 友好 URL 的建议

spring - 为什么Spring在application/json get请求上解码+(加号字符)?我该怎么办?

php - 注销脚本不起作用

php - 如果未传递数组,则使用正则表达式文件

javascript - 如何删除一个单选按钮的后值以呈现新的单选结果

java - FileUpload isFormField() 在提交文件时返回 true

node.js - 在 Node 中创建 REST API 时,如何将来自对外部网站的请求的 http 响应流式传输到原始 api 调用?