昨天鼓捣一晚上也没有把Ajax请求中的中文乱码问题解决,可今天早上随便乱改,问题居然解决了???我的天啊,真的不知道为什么!而且这种解决方案是我认为不可行的!
我在网上找遍了解决乱码问题资料,可没有一个能行的通,无奈只好自己研究
!其实解决的方法很简单,具体如下:
将客户端文件的编码设置为GB2312,如下面代码所示:
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
在发送的URL地址中的查询字符串或者是使用POST方式发送的请求内容不要使用escape函数进行编码,切记!
在服务器端的jsp文件也设置为gb2312编码格式,如下面代码所示:
或者设置response的头,如下面代码所示:
- response.setHeader("Content-Type","text/html; charset=gb2312");
两者原理是一样的。
最着关键的是在获取参数时应该对获取字符串进行重新编码,如下面代码所示:
- String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GB2312");
其中,username为接收的参数。
直接使用out.print(username);就可以将中文返回给客户端,在客户端直接使用xmlHttp.responseText属性就可以直接使用返回的中文了!
附件中我测试用的一个小例子,在tomcat6.0和resin2.1.8中通过测试!
其实,还有一个一劳永逸的解决方案,就是添加一个过滤器。
本文介绍了一种解决Ajax请求中中文乱码问题的有效方法。主要包括调整客户端和服务器端的编码格式为GB2312,并在获取参数时进行重新编码。

被折叠的 条评论
为什么被折叠?



