spring3mvc中使用ajax传json中文乱码解决

29 篇文章 0 订阅

第一种解决方法,适用所有情况

因为在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无法识别,会报错误

Servlet.service() for servlet springMVC threw exception
java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: org.apache.catalina.connector.RequestFacade@58fbd53e


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值