URL编码/百分号编码

URL编码(URL encoding),也称作百分号编码(Percent-encoding),是特定上下文的统一资源定位符 (URL)的编码机制。实际上也适用于统一资源标志符(URI)的编码。也用于为”application/x-www-form-urlencoded” MIME准备数据, 因为它用于通过HTTP的请求操作(request)提交HTML表单数据。

URI是统一资源标识的意思,通常我们所说的URL只是URI的一种。下面提到的URL编码,实际上应该指的是URI编码。

什么时候需要使用URL编码

1.除了合法的URI字符,URI中的其它字符必须用百分号编码。
2.将具有特殊含义的保留字符用于其它目的时,也必须使用URL编码。

URI中只允许使用以下保留和未保留字符:

保留字符是那些具有特殊含义的字符,RFC 3986 section 2.2 保留字符

! * ‘ ( ) ; : @ & = + $ , / ? # [ ]

RFC 3986 section 2.3 未保留字符

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 – _ . ~

字符要先转换为UTF-8字节序列, 然后对其字节值使用百分号编码。

字符百分号”%”应该被编码为:”%25″。

在gbk(GB2312)中,一个汉字编码对应%xx%xx,即两组百分号和16进制数;而UTF-8对应%xx%xx%xx,三组百分号和16进制数。

浏览器网页URL编码规律

直接在浏览器地址栏输入URL,使用的是utf-8编码

URL中的查询字符串使用操作系统的默认编码,如“http://www.baidu.com/s?wd=你好”其中“?”以后的是查询字符串。

网页中的URL编码方法由网页的编码决定,也就是由HTML源码中字符集设置决定。
<meta http-equiv=”Content-Type” content=”text/html;charset=xxxx”>
如果上面这一行最后的charset是UTF-8,则URL就以UTF-8编码;如果是GB2312,URL就以GB2312编码。例如,百度是GB2312编码,Google是UTF-8编码。

Javascript生成的HTTP请求,IE采用操作系统的默认编码(GB2312),而Firefox采用utf-8编码。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注