本次应用场景:

后台:spring mvc

 前端:jquery ajax json.js

 

spring mvc代码:

@RequestMapping(....)

public @ResponseBody String getSomething(HttpServletResponse response)

{

response.setHeader("Charset","UTF-8");   //设置编码为utf-8

//业务代码

 

//return str;

//之前是直接返回字符串,研究发现,spring使用注解时在代码内部使用了硬编码iso-8859-1

//后续补充:如果将str重新编码后返回也是可以完成同样效果,

//代码: return new String(str.getBytes("utf-8"),"iso-8859-1");

//如果使用如下方式返回就没有问题。

response.getWriter().print(str);

return null;

}

这样返回给前端时,只要通过JSON.parse(str)就可以将ajax返回的字符串转换成json对象(注,返回的字符串要满足json格式,{“id”:"101"}或者数组形式[{“id”:"101"},{“id”:"102"}])

 

如果返回的是一个List<Object>类型的list,

var jsonStr = JSON.JSON.stringify(lsit) //将list转换成json串

var json = var obj = eval('(' +jsonStr+ ')');//将json串转换成json对象,然后进行操作

如:var id = json.id; 


后续补充:其实在requestMapping中设置produces编码为utf-8即可 方便又省事。

@RequestMapping(produces={"application/json;charset=UTF-8"}).

更多推荐

spring mvc 返回给jquery ajax 请求的数据包含中文问题