浏览 7851 次
锁定老帖子 主题:Ajax中文乱码问题解决方案
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-02
昨天鼓捣一晚上也没有把Ajax请求中的中文乱码问题解决,可今天早上随便乱改,问题居然解决了???我的天啊,真的不知道为什么!而且这种解决方案是我认为不可行的! 我在网上找遍了解决乱码问题资料,可没有一个能行的通,无奈只好自己研究!其实解决的方法很简单,具体如下:
将客户端文件的编码设置为GB2312,如下面代码所示: Html代码
在发送的URL地址中的查询字符串或者是使用POST方式发送的请求内容不要使用escape函数进行编码,切记! 在服务器端的jsp文件也设置为gb2312编码格式,如下面代码所示: jsp 代码
或者设置response的头,如下面代码所示: java 代码
两者原理是一样的。 最着关键的是在获取参数时应该对获取字符串进行重新编码,如下面代码所示:
java 代码
其中,username为接收的参数。 直接使用out.print(username);就可以将中文返回给客户端,在客户端直接使用xmlHttp.responseText属性就可以直接使用返回的中文了! 附件中我测试用的一个小例子,在tomcat6.0和resin2.1.8中通过测试! 其实,还有一个一劳永逸的解决方案,就是添加一个过滤器。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-12-02
标准做法是unicode,编码一般可以utf-8,在某些不支持unicode的环境中做特殊处理,这种场景很少,所以那样成本要小很多
|
|
返回顶楼 | |
发表时间:2007-12-03
还有一种方法,就是提交前用javascript把中文值进行BASE64编码一下,服务器程序取到该BASE64编码后的值,再还原一下,中文就OK了。
但这种方法可能比笨拙,不过也是一种方法。呵呵。 |
|
返回顶楼 | |
发表时间:2007-12-13
补充一下提交方法为GET时时在服务器里写的时这句代码 String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"GB2312"); 为POST时应该时这样吧 String username = new String(request.getParameter("username").getBytes("ISO8859_1"),"utf-8"); |
|
返回顶楼 | |
发表时间:2007-12-14
JSP的自己写个类转换一下就行了~~我一直这样用~~如果不懂得可以加我QQ:836199366
|
|
返回顶楼 | |
发表时间:2007-12-16
呵呵,弄个过滤器就好了!过滤编码!
再加上escape就好了 |
|
返回顶楼 | |