问题背景
从首页跳转到项目的列表页是时候,列表页出现了异常。乱码显示。具体现象如下:
跳转连接为: www.ly.com/flights/iti…
Chrome正常加载
IE11 无法正常加载
问题初步分析
跳转URL上存在中文,需要进行编码。 经测试编码后IE和Chrome均可正常加载
思考:这种现象的具体原因是什么呢?
首先想到的是不同的浏览器对编码的方式不一样。这么想的原因是:url是有自己的规范的。
URL遵从的规范是:REF 1378规范。www.faqs.org/rfcs/rfc173…
因此,只有字母数字,特殊字符“$-_.+!*'(),“,用于保留目的保留字符可以在URL中使用未编码的字符。
总之:这里面是不能使用中文的,如果url里面出现了中文不同的浏览器会按照自己的方式处理。下面来分析下不同浏览器的处理方式。
IE浏览器下
地址栏地址变为:“www.ly.com/flights/iti…
可以看出“北京”被编码为:%E5%8C%97%E4%BA%AC
“重庆”被编码为:%E9%87%8D%E5%BA%86
查阅后会发现他们采用的编码格式是UTF-8的方式编码的,如果使用放使用URLDcode的方式解析的话必然是乱码