首页 > WORK > Ajax返回中文乱码的问题

Ajax返回中文乱码的问题

版权声明:本文可以任意转载,转载时请务必以超链接形式标明文章原始出处作者署名本版权声明

用taconite做Ajax,以前都是尽量返回数字或英文,这样一方面避免中文问题,一方面减小传输量,在页面再用一个map通过js来匹配,显示出相应的中文。

这次情况有些特殊,“摘要”栏的内容是其他交易输入的,因此要做到动态匹配,本身页面上的map还要到后台去取一遍,这样就太浪费了,还是解决一下中文问题,直接传回来中文的内容比较好。

问题其实就是返回来的responseText或responseXML的值中含有中文就变乱码,taconite的js又不认这个,就报错。

这个问题要说解决起来也很简单,原因是Ajax在接收responseText或responseXML的值的时候是按照UTF-8来解码的,如果服务器端发送的数据不是UTF-8的格式,那么接收的值就会是乱码,而Java后台这边是以Unicode来编码的,问题就出现了。

解决方法就是在服务器端设置response的编码格式:

response.setCharacterEncoding("UTF-8");

这样就能正常显示中文了,上图中的"科目号"里就包括了回显的中文。

另外在测试环境试了一下,在WebLogic 8.1 SP5上那样设还不行,一定要设成:

response.setContentType("text/xml;charset=UTF-8");

分类: WORK 标签: , ,
  1. 哈哈
    2007年6月8日21:21 | #1

    我是用js文件调用页面..我的页面在单独的情况下可以显示没有乱码…但是在用js调用时就出现乱码….是什么问题…..那位大侠帮帮我啊….

  2. 2007年6月10日11:09 | #2

    跟浏览器也有关系,比如如果什么都不设,用IE7OK,IE6就不OK。

  3. 拖鞋树
    2007年9月17日22:59 | #3

    多谢你的经验,帮了我大忙
    :)