您的位置:首页 > 编程语言 > Java开发

spring-mvc @responseBody注解返回中文乱码解决

2015-08-26 11:22 204 查看
在项目中能设置UTF-8基本都设置了,通过ajax请求后台的springmvc后返回中文字符串,页面显示???,解决办法是:

在方法中添加:produces = “text/html;charset=UTF-8”。

具体添加位置如下:

@RequestMapping(value="/getpersonLimitItemNameByDeptIdAndSglcheckid", 
produces = "text/html;charset=UTF-8")
    @ResponseBody
    public String getpersonLimitItemNameByDeptIdAndSglcheckid(
            HttpServletRequest request) {


在ajax添加

contentType:’application/x-www-form-urlencoded; charset=UTF-8’不起任何作用。

如果使用了@ResponseBody注解,springMVC会自动把对象转化为json字符串,而不用将对象转成json字符串然后再返回。比如可以用如下的写法:

@RequestMapping("/testObj")
    @ResponseBody
    public WebResult responseJsonObj(HttpServletRequest request) {
        WebResult wr = new WebResult();
        wr.setFlag(0);
        wr.setMsg("测试");
        return wr;
    }


返回的json字符串格式为:

{"flag":0,"data":[],"o":null,"msg":"测试"}


以下为个人在网上查找的资料得出来的猜测:

如果将对象转化为字符串再返回和直接返回的对象,对springMVC而言是不同的代码处理,一个默认编码为ISO-8859-1,另一个为UTF-8.所有导致乱码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: