发布网友 发布时间:2022-05-22 11:37
共1个回答
热心网友 时间:2024-03-08 05:45
楼主这不是乱码,这是字符转义,浏览器将地址栏参数的特殊字符自动转义。追问这回影响我的请求么 我手动登陆 为啥没有转义呢追答你好,并不影响,你可以用IE浏览器打开百度,随便搜索
abc{}中文
然后观察地址栏这个参数
wd=abc%7B%7D%E4%B8%AD%E6%96%87
abc不是特殊字符所以不需要转义,然后你看到{和}被转成了%7B和%7D
中文2字被转成%E4%B8%AD和%E6%96%87。
字符转义的编码格式需要看页面使用的是什么编码,例如utf-8下一个中文是3个字节,所以你会看到% + 2个16进制字符代表一个字节,那就是有3个%
但是像{}这种特殊字符属于ASCII,utf8下也是用一个字节存储。
楼主我再补充你一点知识
正常来说国内页面常用的编码有这几种,gb2312、gbk和utf-8,像ASCII字符转义都是一个字节的,所以不会出现乱码,这是浏览器自动完成的你不需要理会,但是你要注意的是万一你的参数中带有中文,如果你页面使用的是utf-8编码,浏览器就会用utf-8编码转义你的字符发送给服务端,你服务端接受参数的时候不是使用utf-8编码来反转义,那么你就会得到一个乱码的参数。