当前位置: 首页 > web>阅读正文

javascript进行url编码,ajax的get请求中文乱码问题

2021.9.19 朱丰华 1847 次 留下评论 730字

javascript默认有2个对url编码函数

  • encodeURI()
  • encodeURIComponent()

js的url编码函数

两者的效果如下:

// 原字段
https://www.52dixiaowo.com?s=我是中文参数

// encodeURI编码结果
https://www.52dixiaowo.com?s=%E6%88%91%E6%98%AF%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0

// encodeURIComponnent编码结果
https%3A%2F%2Fwww.52dixiaowo.com%3Fs%3D%E6%88%91%E6%98%AF%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0

还是看不太明白?如果你使用ajax发送参数时,你应该使用的编码是encodeURIComponent,因为参数中的所有编码都应该被编码

如果你想拼接一个url进行访问,那么使用encodeURI。

一个很简单的例子,正如你使用了encodeURI进行编码”C++”这个字段使用ajax的get请求发送到后端,后端接收到并解码后得到的是”C “,因为两个++变成了一个空格。

ajax的get中文乱码

正如上述所说,要解决该问题,只需要

参数 = encodeURIComponent(参数);

通过对该参数进行编码,在后端进行url解码即可。

为什么get会乱码?而post不会?

get发送时会访问该url,后端也通过当前url判断,可当你访问该url时,你输入的字符不被浏览器承认,也就是组成的url是错误的,含有非法字符被浏览器自动转码,所以后端取到的也是错误的。

而post参数是在http协议的body中,并不受影响。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注