您的位置: 消费周刊网 > 资讯 > 正文

整理项目里面一些中文乱码的解决方案供大家参考!

2021-03-04 04:07:20来源:阅读:

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 结语

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

推荐阅读:创业中国

滚动推荐
07:20整理项目里面一些中文乱码的解决方案
1 提交到后台中文乱码在web.xml中配置最上面配置字符集过滤器这可[详细]
07:032.5D玻璃缔造完美质感,高颜值高
春节一天天临近,很多人都想犒劳一下辛苦了一年的自己,为自己换个新手机。[详细]
06:20阿里巴巴达摩院出品,一手就能掌握的
要说智能音响国内应该有很多款,不仅各大互联网巨头还有一些厂商纷纷入局智[详细]
45:12助力新经济、新业态 深圳文交所20
助新经济新业态 深圳文交所2021业务模式上线 [详细]
07:10阿卡索王志彬:打造优质外教供应链的
今年1月底,阿卡索宣布即将完成C5轮融资。虽投资方及融资金额未披露,但[详细]
41:03国产机最顶级屏幕!一加7 Pro屏
玩机技巧、数码评测、科普深扒。从此前的曝光资料来看,一加7Pro是这些[详细]
34:14梦幻西游手游iOS版怎么充值 充值
梦幻西游iOS版和安卓版一样,可以通过网易通行证登录。不过和安卓版梦幻[详细]