IE 浏览器中请求的 URL 乱码

问题描述

做 Insight 的过程中,遇到如下问题:

包含中文作为参数的 url 在 Chrome 中可以正常请求,从服务端获取数据。
而在 IE 浏览器中,url 中的中文会变成莫名其妙的字符,导致从服务器端获取数据失败。

解决方案

使用 encodeURI 函数对 url 进行转码。

escape、encodeURI、encodeURIComponent区别

背景知识

JavaScript中有三个可以对字符串编码的函数,分别是: escape、encodeURI、encodeURIComponent,
相应3个解码函数:unescape、decodeURI、decodeURIComponent。

escape

escape 函数与encodeURI、encodeURIComponent是两路人。

escape 是对字符串进行编码,以便在所有的计算机上读取该字符串,而另外两个函数是对 URL 进行转码。

如果只是编码字符串,和 URL 没有任何关系,那么用escape。

encodeURI 和 encodeURIComponent

语法

encodeURI(URI);

encodeURIComponent(str);

如果需要编码整个 URL 并且使用这个 URL,那么应该用 encodeURI。

当需要编码 URL 中的参数的时候,那么 encodeURIComponent 是最好的选择。

志遥 wechat
微信扫一扫,我在丁香园记公众号等你