URL编码规范
URL(Uniform Resource Locators) 统⼀一资源定位符,RFC⽂文献1738中定义了它详细的规范(1994年12月)
只有字⺟母和数字[0-9a-zA-Z]、⼀一些特殊符号“-_.~”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。
这意味着如果URL中有汉字, 就必须编码后使用。 但是⿇麻烦的是, RFC 1738没有规定具体的编码⽅方法,⽽而是交给应⽤用程序(浏览器)⾃自 ⼰己决定。这导致“URL编码”成为了⼀一个混乱的领域。
-
网络路径的编码,统一使用的是utf-8编码 如: find.qq.com/腾讯/
-
querystring包含汉字的情况,采⽤用OS默认的字符编码,如 XP下默认GB2312,MacOS下是utf-8编码。
-
GET和POST方法生成的编码,采用的是当前网页声明的编码。
-
在XHR,IE总是采用GB2312编码,而非IE总是采⽤用utf-8编码
所以我们一定要做URL主动编码:
不要依赖浏览器默认的编码,在传输数据之前,主动采用js方法对url进行编码,js可以用来编码的函数有2个
最后得出的结论:
• 新产品上线尽量使用UTF-8编码,避免多编码存在的混乱局面, 并且满足国际化;
• 根据业务需求和容量,避免不必要的浪费,例如日志的存储。
• 发送HTTP请求的时候,注意你的字符编码,一定要与上下游接 收方保持一致。