在Chrome下,使用ajax的get方法请求数据时,url中带中文是没有问题的,但是在IE下,中文会被变成乱码发送过去,以至于无法获取数据。
一个办法:使用encodeURI方法将中文转换至URI编码,可以完美解决乱码问题,并且兼容所有浏览器。
var url = encodeURI("http://xxx.xxx.xxx.23?" +中文);
$.ajax({
type:"get",
url:url,
dataType:"json",
success:function(data){
console.log(data)
},
error:function(err){
console.log(err)
}
});
encodeURI() 与
encodeURI() 函数可把字符串作为 URI 进行编码。
https://www.sojson.com/encodeurl.html?我是个中文参数
https://www.sojson.com/encodeurl.html?%E6%88%91%E6%98%AF%E4%B8%AA%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0
说明
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
encodeURIComponent() :
https://www.sojson.com/encodeurl.html?我是个中文参数
https%3A%2F%2Fwww.sojson.com%2Fencodeurl.html%3F%E6%88%91%E6%98%AF%E4%B8%AA%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0
提示和注释
提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。