Ajax post乱码问题解决方案

来源:互联网 发布:京东品类销售数据 编辑:程序博客网 时间:2024/05/22 03:31

今天测试一个Ajax组件的时候遇到乱码问题,在网上找了很多解决方案都未能解决,原因可能我出现乱码的问题不在传输过程,而且是在页面上就已经出现乱码了,现象很奇怪,我直接把参数赋值为中文后alert,发现是乱码,所以不管我怎么设置和在后台解码都依然是乱码。后来找到原因,共分两点:
第一:我的meta标签设置的是:    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
第二:我是把整个参数构造完后一起encodeURIComponent。
解决方案:
把meta标签改为:
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
并且把参数构造的过程分别对key和value进行encodeURIComponent操作。
后台servlet解码:new String(param.getBytes("ISO-8859-1") , "UTF-8);
备注:
ajax设置为:
 xhr.open("POST", url, this.async);
 xhr.setRequestHeader("content-type", "text/plain");//后台解析必须的以流的形式解析
xhr.send(param);
其中param构造形式如下:
param = encodeURIComponent('key')+'='+encodeURIComponent('value')+'/n';
之前:
param = 'key'+'='+('value')+'/n';
param = encodeURIComponent(param);
这样处理出现乱码。

 

原创粉丝点击