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

在项目中能设置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.所有导致乱码。

你可能感兴趣的:(spring,mvc,Ajax,乱码)