首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

ajax乱码有关问题,真烦

2012-10-30 
ajax乱码问题,真烦网上也找了些资料看,还是没解决,我把jsp、java文件的属性里编码都设为了gbk,过滤器中也设

ajax乱码问题,真烦
网上也找了些资料看,还是没解决,我把jsp、java文件的属性里编码都设为了gbk,过滤器中也设为gbk,在js中,也写上了xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");这句,但是,提交到服务器时,收到的怎么还是乱码呢?主要代码如下:

<head>
<script language="javascript">

var xmlHttp;

function createHttpRequest(){
if (window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if (window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
xmlHttp.overrideMimeType("text/xml");
}
}


function HandMethod(){
if (xmlHttp.readyState == 4){
if (xmlHttp.status == 200){
var text = xmlHttp.responseText;

if (text != null){
document.getElementById("UserInfo").innerHTML = text;

}

}else if (xmlHttp.status == 404){
alert("路径出现错误");
return;
}else if (xmlHttp.status == 500){
alert("服务器出现错误");
return;
}
}
}

function saveUserInfo(){

var userInfo= document.getElementById("UserInfo").innerText;

alert("UserInfo:"+userInfo);//这里提示出来的信息,还没出现乱码,说明在传到服务器前是正常的,那是不是说明是在传输过程 中变乱的呢?如果是这样,那是不是跟网络的传输协议等有关系呢?请高手指教。

createHttpRequest();
var url = "<%=path%>/user.do?task=saveUserInfo";
xmlHttp.open("post",url,true);

xmlHttp.onreadystatechange=HandMethod;

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//这里已经设置编码了,怎么不起作用呢?
xmlHttp.send("&userName="+userInfo+"");

}


</script>

  </head>
  
  <body>

<div id="UserInfo">

  姓名:张三

</div> 

<input type="button" value="保存" onclick="saveUserInfo();"/>

  </body>
</html>

补充说明一下:
我之前不用这个:xmlHttp.send("&userName="+userInfo+"");,而直接用var url = "<%=path%>/user.do?task=saveUserInfo&userName="+userInfo+"");,服务器上得到的也是乱码,但我用下面的方法,可以转为正常,但用了xmlHttp.send("&userName="+userInfo+"");,就不能转为正常的了,很怪,望高手们多多指教,转编码的方法如下:

public String getISOtoGBK(String para) {
if (para == null || "".equals(para)) {
return "";
}
para = para.trim();
String strtmp = "";
try {
strtmp = new String(para.getBytes("iso-8859-1"), "GBK");
} catch (Exception uee) {
uee.printStackTrace();
return "";
}
return strtmp;
}

那里出问题的呢?跟浏览器有没关系呢?我用的是IE7,我编码全改为UTF-8也没效果,若表述不清楚,下次再补充吧.

[解决办法]
如果用TOMCAT
把server.xml中
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>

[解决办法]
发送接收,都用utf-8就好咯
[解决办法]
1.看看你整体的jsp页面是不是用的gbk
2.看看使用的编译工具编译的格式是不是gbk比方说eclipse里面的js编译方式改为gbk
[解决办法]
在你的ajax servlet的service方法中、在response做输出之前:
response.setContentType("text/xml; charset=GBK");
加上那个试试
------解决方案--------------------


探讨
在你的ajax servlet的service方法中、在response做输出之前:
response.setContentType("text/xml; charset=GBK");
加上那个试试

[解决办法]
我在页面的设置:
xmlhttp.setRequestHeader("Method", "POST "+ url +" HTTP/1.1");
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
[解决办法]
乱码解一下就是了。
中文问题一直是java的头疼的问题,只能头疼医头,脚疼医脚

String str = new String(str.getbytes("iso8859-1"),"gb2312")

什么gbk、iso8859-1、gb18030、gb2312统统使唤一般轮番上阵,我还就不信解不开
[解决办法]
我以前也遇到这问题,后来全改成UTF-8就好了,因为Ajax默认的编码就是UTF-8,其他编码没用....
[解决办法]
我也有这个问题..关注...

据说是因为ajax用URL传送 但是URL不能解析识别中文什么的,得escape 和 unescape

不过我还是没搞定,希望楼主可以试试看我说的这个,如果搞定了还请贴出解决方法.
[解决办法]
get传递用encodeURIComponent()转一下码
返回ajax需要的数据,直接用utf-8肯定没错。
[解决办法]
直接写个Filter就行了 每次调用*.do文件时执行
[解决办法]
java 里的页面设置字符集是没用的 还要在其他的地方设置 我遇到过一次这种类似的问题 要全部统一的呵呵,其他的地方还要设置的
[解决办法]
探讨
在你的ajax servlet的service方法中、在response做输出之前:
response.setContentType("text/xml; charset=GBK");
加上那个试试

[解决办法]
注意JSP和HTML的文件编码
你可以注意一下那个文件是什么编码的
用UltraEdit等工具验证下
还有
在写Script块时候要写
charset="GBK"
[解决办法]
楼主 我曾经也遇到过类似的问题,有时也跟全半角有关 比如 张三(乱码) 张三.(没有乱码)

等等 引起乱码有很多原因,至今我还不是很清楚,还有 通过地址传中文的时候,加上‘’时,前2个中文是好的到第三个或后面的就出问题了比如车牌号 粤z3212港 前面的粤z是好的 后面的港就是乱码 

虽然不知道怎么解决但是我顶你

热点排行
Bad Request.