urlencode后的每个%XX代表一个字节?

发布于 2022-09-03 09:12:59 字数 80 浏览 24 评论 0

中文urlencode后,每个%XX代表一个字节,是这样的吧?
所以urlencode('中')的结果是%XX%XX%XX(utf-8编码)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风流物 2022-09-10 09:12:59

对的,为了解决unicode的过于占用内存空间和扩展不变的问题,utf-8规范出现了。

  1. 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

  2. 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

也就是说utf-8的编码结果是变长的。
字的utf-8编码为E4B8AD,所以对应的urlencode为%E4%B8%AD.

若沐 2022-09-10 09:12:59

是的,URL编码纯粹是把特殊符号和非ASCII字符的的数据用十六进制表示出来,然后每个字节(也就是两位十六进制数)前加一个百分号。对于那些不特殊的ASCII字符的URL编码就是它本身。

同样一个中字,如果是GBK编码就是两个字节,如果是UTF-8就是三个字节。

当然,比较麻烦的是URL编码比较混乱。比如有的地方用+来表示空格,有的又是用%20,具体情况还是要具体分析。前者对应的是函数是urlencode,后者对应的是rawurlencode。通常前者用在表单数据中(包括URL中的query也就是?后的部分),后者用在URL路径中(host后query前的部分)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文