请教如何解决 JS中接受服务器端传来的JSON数据乱码问题

silent_chen_jquery 2010-04-12 08:14:37
JS代码:


$.get("FlxsAction",null,function(data){


//alert("back");
//var lmObj = eval("("+data+")");
var lmObj = data;

if(lmObj.length!=0){

for(var i = 0 ; i<lmObj.length ; i++){
alert(lmObj[i]); //乱码=====================
$("<option value='"+lmObj[i]+"'>"+lmObj[i]+"</option>").appendTo(flxs);
}
}
},"json");


服务器端是一个Action(Struts2)


LmListDAO lm = new LmListDAO();
ArrayList<String> lmlist = lm.getLmList();
if(lmlist!=null){
Gson g = new Gson();
String listToJson = g.toJson(lmlist);
System.out.println("-----Gson类型转换------");
System.out.println(listToJson);
out.write(listToJson);//此处控制台输出没有乱码
}


请大家给个建议! 谢谢!
...全文
1502 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmjsex1121 2012-09-03
  • 打赏
  • 举报
回复
把TOMCAT的编码方式改成UTF-8
  • 打赏
  • 举报
回复
楼主用的gson的jar版本是多少的?我用gson-2.1.jar就乱码,用gson-1.2.3.jar就没有乱码。

没做更多尝试。
longxiong408206306 2012-02-10
  • 打赏
  • 举报
回复
请问楼主struts2中,在Action里面 out.write(listToJson)能把数据发送到前台吗?
心如刀割 2010-06-07
  • 打赏
  • 举报
回复
请问楼主,这个问题你解决了吗?
silent_chen_jquery 2010-04-13
  • 打赏
  • 举报
回复
问题还是没有解决,后台中文编码都没有问题,问题是传回JS里面就产生了乱码!
BlackGlove 2010-04-13
  • 打赏
  • 举报
回复
在ACTION里加入

HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/json; charset=GBK");

JSP里的头是:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>


我是这样设置的,没有乱码!!
tuo_bing 2010-04-13
  • 打赏
  • 举报
回复
关注 帮顶 !...
xiayuqijava 2010-04-13
  • 打赏
  • 举报
回复
在JS调用后台方法那里设置:response.setContentType("text/html;charset=utf-8");
Achilles_Dynasty 2010-04-13
  • 打赏
  • 举报
回复
1.确保out.write(listToJson);是在设置response的编码格式之后调用的。
2.把js和jsp的页面编码也是为utf-8试试,不要既有gb2312也有utf-g
3.看看js和jsp,action那个类的文件的属性,看文件的编码是否为utf-8。
基本应该就这几个点。楼主可以再试试,其他的想到再告诉你。
silent_chen_jquery 2010-04-13
  • 打赏
  • 举报
回复
很郁闷,按照常理来说,我列举的以上三种方式可以解决问题了,但是很不幸的是问题依旧没解决,我又写了一个过滤器类,结果依然是乱码,真是悲剧了...
哪位高手能帮忙解决一下啊!
爱你的锤锤 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 blackglove 的回复:]
在ACTION里加入

Java code

HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/json; charset=GBK");


JSP里的头是:

HTML code
<%@ page language="……
[/Quote]
ServletActionContext.getResponse().setContentType("application/json; charset=utf-8");

我也在为这个问题烦恼,加了上面那句就好了,非常感谢,哈哈!
lzq061297 2010-04-12
  • 打赏
  • 举报
回复
AJAX解决中英文麻烦。
silent_chen_jquery 2010-04-12
  • 打赏
  • 举报
回复
控制台没有乱码产生,输出信息正常
---------------------------------------------------------------------------------------------------
["显示所有栏目信息","农村特色","公告通知","村情介绍","基层党建","政策法规","服务指南","招商引资","新农村建设","村务公开","农业科技","图片新闻","交易平台"]

qingyuan18 2010-04-12
  • 打赏
  • 举报
回复
Gson g = new Gson();
String listToJson = g.toJson(lmlist);
不是很清楚这里的Gson是什么转换策略,你控制台中打印出来的json数据字符串是怎样的呢?
silent_chen_jquery 2010-04-12
  • 打赏
  • 举报
回复
还是不行,为此我做了很多修改:
1、在JSP页面上设置了js的引入文件编码类型
<script type="text/javascript" src="../js/admin_news_list_flxs.js" charset="gbk"/>
2、设置了Action中的编码形式
response.setContentType("application/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
3、设置了JSP页面的
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>

以上设置都没有解决问题,希望知道的朋友告诉一下解决方法!
Achilles_Dynasty 2010-04-12
  • 打赏
  • 举报
回复
response.setCharacterEncoding("UTF-8");
response.getWriter().write(listToJson);

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧