您好,欢迎访问一九零五行业门户网

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

中文urlencode后,每个%xx代表一个字节,是这样的吧?
所以urlencode('中')的结果是%xx%xx%xx(utf-8编码)
回复内容: 中文urlencode后,每个%xx代表一个字节,是这样的吧?
所以urlencode('中')的结果是%xx%xx%xx(utf-8编码)
对的,为了解决unicode的过于占用内存空间和扩展不变的问题,utf-8规范出现了。
对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,utf-8编码和ascii码是相同的。
对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
也就是说utf-8的编码结果是变长的。
中字的utf-8编码为e4b8ad,所以对应的urlencode为%e4%b8%ad.
是的,url编码纯粹是把特殊符号和非ascii字符的的数据用十六进制表示出来,然后每个字节(也就是两位十六进制数)前加一个百分号。对于那些不特殊的ascii字符的url编码就是它本身。
同样一个中字,如果是gbk编码就是两个字节,如果是utf-8就是三个字节。
当然,比较麻烦的是url编码比较混乱。比如有的地方用+来表示空格,有的又是用%20,具体情况还是要具体分析。前者对应的是函数是urlencode,后者对应的是rawurlencode。通常前者用在表单数据中(包括url中的query也就是?后的部分),后者用在url路径中(host后query前的部分)
其它类似信息

推荐信息