ajax发送请求到Spring MVC的Controller 返回json字符串乱码

copy地址: http://blog.csdn.net/dangerous_fire/article/details/25904225

第一种解决方法,适用所有情况
因为在controller中返回json用了@ResponseBody,而spring源码中@ResponseBody 的实现类发现其默认的编码是 iso-8859-1,而项目用的编码为utf-8,所以传中文会出现乱码,解决办法是不用注解,直接用response,转换编码。

@RequestMapping("/modifyconfiginput")  
@ResponseBody  
public String modifyinput( @RequestParam(value="id") String id,   
                           @RequestParam(value="timestamp") String timestamp,   
                           HttpServletResponse response ) throws Exception {   
    ImmediateConfig ic = this.immediatePictureService.findImmediateConfig(id);   
    String json = "["+"{name:'"+ic.getName()+"',classId:'"+ic.getProductClass().getClassId()+"',pyFile:'"+ic.getPyFile()+"'}]";   
    System.out.println("json:"+json);   
    //return json;   
    // 设置response的ContentType解决中文乱码   
    response.setContentType("text/html;charset=UTF-8");   
    response.getWriter().print(json);   
    return null;   
} 


第二种解决方法,可用于新版本的spring
@RequestMapping(value="/ajaxCounterList", produces = "application/json; charset=utf-8")  

注意:在IE浏览器中必须声明返回的类型,如下
@RequestMapping(value="/upload/upload",produces="text/html;charset=UTF-8")
或者用第一种方法,但也要声明为 text/html 类型,否则IE无法识别,会报错误


我是橄榄绿

猜你喜欢

转载自451640893.iteye.com/blog/2397101