您所在的位置: > 主页 > 安徽热线 > 资讯 > 正文
整理项目里面一些中文乱码的解决方案供大家参考!来源: 日期:2021-03-04 13:09:14  阅读:-

    1 提交到后台中文乱码

    原因及解决方案

    在web.xml中配置最上面配置字符集过滤器

    characterEncodingFilter

    org.springframework.web.filter.CharacterEncodingFilter

    encoding

    UTF-8

    forceEncoding

    true

    characterEncodingFilter

    /*

    2 JSON乱码

    //输入

    @RequestMapping(value="/json")

    @ResponseBody

    public String testMap() {

    Map map = new HashMap<>();

    map.put("name", "中国");

    map.put("age",1);

    map.put("sex", "man");

    return map.toString();

    }

    //输出

    {sex=man, name=??, age=1}

    原因及解决办法

    Spring 默认的消息转换器StringHttpMessageConverter 中默认的编码是ISO-8859-1

    public class StringHttpMessageConverter extends AbstractHttpMessageConverter {

    public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");

    //.......

    }

    RequestMapping

    @RequestMapping(value="/json", produces = "application/json; charset=UTF-8")

    3 配置xml 消息转换器

    当然推荐xml配置的方式配置,一劳永逸,不用再每个方法上写produces。

    当然这只是一种MessageConverter的配置。如果@ResponseBody返回的不是String, 而是User对象或Map等结构数据类型时,配置JSON相关的转换器时也需配置字符集。 使用的最新版Spring 4.3.10。发现配置JSON的时候 只有org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 这个转换器了。MappingJacksonHttpMessageConverter 已经被删除了。而且MappingJackson2HttpMessageConverter父类AbstractJackson2HttpMessageConverter中默认字符集就是UTF-8.这就更加方便配置了。只要配置了JSON转换器为MappingJackson2HttpMessageConverter即可。其他属性默认即可。当然为了统一以前的写法,使项目组其他小伙伴更加清晰,建议明确在xml中配置字符集。

    4 最终配置

    application/json;charset=UTF-8

    5 结语

    这可能是比较常见的几种情况,若是各位小伙伴有什么其他情况的话,欢迎补充和指正。

    (正文已结束)

    免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎!