URL编码规范

URL(Uniform Resource Locators) 统⼀一资源定位符,RFC⽂文献1738中定义了它详细的规范(1994年12月)

只有字⺟母和数字[0-9a-zA-Z]、⼀一些特殊符号“-_.~”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。

这意味着如果URL中有汉字, 就必须编码后使用。 但是⿇麻烦的是, RFC 1738没有规定具体的编码⽅方法,⽽而是交给应⽤用程序(浏览器)⾃自 ⼰己决定。这导致“URL编码”成为了⼀一个混乱的领域。

  1. 网络路径的编码,统一使用的是utf-8编码 如: find.qq.com/腾讯/

  2. querystring包含汉字的情况,采⽤用OS默认的字符编码,如 XP下默认GB2312,MacOS下是utf-8编码。

  3. GET和POST方法生成的编码,采用的是当前网页声明的编码。

  4. 在XHR,IE总是采用GB2312编码,而非IE总是采⽤用utf-8编码

所以我们一定要做URL主动编码:

不要依赖浏览器默认的编码,在传输数据之前,主动采用js方法对url进行编码,js可以用来编码的函数有2个

最后得出的结论:

• 新产品上线尽量使用UTF-8编码,避免多编码存在的混乱局面, 并且满足国际化;

• 根据业务需求和容量,避免不必要的浪费,例如日志的存储。

• 发送HTTP请求的时候,注意你的字符编码,一定要与上下游接 收方保持一致。