关于xml里面含有中文,谷歌提交传递到后台,后台查看中文是乱码的问题。
前台关于中文转码,尝试了很多种方式还是乱码
下面是常见的集中转码方式
第一种:采用encodeURIComponent(title,'UTF-8');
var xgm="<?xml version=\"1.0\" encoding=\"utf-8\"?>";
xgm +='<taxML comment="+encodeURIComponent("暂存",'UTF-8')+'>';
var xgm="<?xml version=\"1.0\" encoding=\"utf-8\"?>";
xgm +='<taxML comment="+eacape("申报表暂存")+">';
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
第三种:在ajax提交的时候加入contentType进行
$.ajax({
type:"POST",
url:url,
data:{putxml:xgm},
//async: false,//1、同步问题,试过不行
dataType:"xml",
//contentType:"pplication/x-www-form-urlencoded; charset=UTF-8",//2、加入该代码,直接转换utf-8不行
//processData:false,//3、这种网上看到的方式还是不行
success:function(data){
alert(data);
}
})
第四种:转载【 今天发现在使用jquery ajax.post提交数据时会发现数据在ff正常,但在chrome与ie浏览器中post过去的数据全部是乱码,在用jquery处理html5的应用的时候,一直在firefox下测试都正常,用户用pad访问的时候说有乱码,
自己试验了下果然,后发现chrome和ie内核下都是有此问题,此问题设置了页面属性为utf-8时候,只有firefox是传的charset=utf-8的头文件
chrome和ie都没有指定,所以出现乱码问题.】
我只测试了谷歌提交,其他方式我都没有测试过,所以谷歌提交,中文在数据库日志里面看到的全是乱码问题。
在ajax post请求之前加入以下代码就OK了。问题解决了
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded; charset=utf-8"
});//在post请求前,加上该代码,就解决了该问题
$.ajax({
type:"POST",
url:url,
data:{putxml:xgm},
//async: false,
dataType:"xml",
//contentType:"pplication/x-www-form-urlencoded; charset=UTF-8",//该代码完全无效,还导致整个xgm传递过去的值是乱码
//processData:false,
success:function(data){
alert(data);
}
})
那么问题来了,我看的脚本之家的两种方式,结果第一种方式我使用就没问题,我使用第二种直接在ajax里面加入contentType:""就没有效果
第四种解决该办法,查看的是该链接:
http://www.jb51.net/article/42801.htm