URL编码
来源:互联网 发布:access 找不到数据库 编辑:程序博客网 时间:2024/06/10 23:24
1、为什么url需要编码?
我们知道Http协议中参数的传输都是"key=value"这种键值对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割。如"?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值。
现在如果我们传输的参数值中就包含=或&这种特殊字符的时候该怎么办? 比如说“name1=value1”,其中value1的值是“va&lu=e1”字符串,那么实际在传输过程中就会变成这样“name1=va&lu=e1”。我们的本意是就只有一个键值对,但是服务端会解析成两个键值对,这样就产生了歧义。
如何解决上述问题带来的歧义呢?解决的办法就是对参数进行URL编码
URL编码只是简单的在特殊字符的各个字节前加上%,例如,我们对上述会产生歧义的字符进行URL编码后结果:“name1=va%26lu%3D”,这样服务端会把紧跟在“%”后的字节当成普通的字节,就是不会把它当成各个参数或键值对的分隔符。
Url编码通常也被称为百分号编码,是因为它的编码方式非常简单,使用%百分号加上两位的字符(0123456789ABCDEF)代表一个字节的十六进制形式。Url编码默认使用的字符集是US-ASCII。对于非ASCII字符,需要使用ASCII字符集的超集进行编码得到相应的字节,然后对每个字节执行百分号编码。对于Unicode字符,RFC文档建议使用utf-8对其进行编码得到相应的字节,然后对每个字节执行百分号编码。如"中文"使用UTF-8字符集得到的字节为0xE4 0xB8 0xAD 0xE6 0x96 0x87,经过Url编码之后得到"%E4%B8%AD%E6%96%87"。
2、Javascript中的 encodeURI和encodeURIComponent的区别
encodeURI和encodeURIComponent都使用UTF-8对非ASCII字符进行编码,然后再进行百分号编码。
encodeURI操纵的对象是一个完整的的URI,这些字符在URI中本来就有特殊用途,因此这些保留字符不会被encodeURI编码,否则意义就变了。
这就意味着如果参数中有保留字符,那么没法进行编码,可能会出现错误。
encodeURIComponent被用作对URI的一个组件进行编码
3、表单提交中的编码
当Html的表单被提交时,每个表单域都会被Url编码之后才在被发送。
对于非ASCII字符,使用的编码字符集取决于当前文档使用的字符集。例如我们在Html头部加上
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
这样浏览器就会使用gb2312去渲染此文档(注意,当HTML文档中没有设置此meta标签,则浏览器会根据当前用户喜好去自动选择字符集,用户也可以强制当前网站使用某个指定的字符集)。当提交表单时,Url编码使用的字符集就是gb2312。
4、页面的编码格式
页面保存时的字符集 与 文件声明的字符集 要保持一致,比如在IDE里面编写HTML的文件,保存的时候选择UTF-8格式,此时在HTML里面的meta标签里面也应该设置charset=utf-8,否则会出现问题
5、Tomcat的URIEncoding配置项
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
默认情况下,Tomcat解析URI编码使用的是ISO8859-1的编码格式,这个地方也需要设置为UTF-8,否则应用程序里面获取的参数也会出现乱码
阅读全文
0 0
- url编码
- URL编码
- URL编码
- URL编码
- url 编码
- URL编码
- URL编码
- URL编码
- Url编码
- URL编码
- URL编码
- URL编码
- URL编码
- url编码
- url编码
- URL编码
- url编码
- url编码
- YII2.0 表单组件的使用方法
- VS2013编译错误:未处理FileLoadException
- Yii Html::a 当参数是数组的时候
- fridge11_28:Git的安装和使用
- Springboot之输出json数据
- URL编码
- Git的使用
- 文件输入输出流(复制文本,视频,音频,图片的多种方式)
- C语言之#include用法详解
- sqlite3数据库命令简介(C语言环境)
- 运行时多态和编译时多态
- Toobar标题文字居中解决方案
- 通过web service查询天气
- Javascript学习笔记(数据类型)