1 提交到后台中文乱码
原因及解决方案
在web.xml中配置最上面配置字符集过滤器
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 最终配置
5 结语
这可能是比较常见的几种情况,若是各位小伙伴有什么其他情况的话,欢迎补充和指正。
推荐阅读:中国风云网
-
雍和宫、国子监,还有馄饨侯、姚记炒肝,老北京
说来惭愧,来北京十二年了,一直生活在五环以外,没特别的事,轻易不会进城。以至于,十二年了,都没去好好逛过老北京。而北京本地人又总跟我说,二环以内才是真正的老北京...
2020-03-18 -
中国最深湖泊,最深处373米,没有任何植物,
长白山是我国十分有名的一座山脉,整座山上有东西南北四个坡,而东坡位于朝鲜,所以要想爬长白山的话,只能从其他的三个坡上去。大家都知道,长白山上的天池景色是十分迷人...
2020-03-18 -
世界上最美的“宅”!江山入窗戏千年
摇曳在塞纳河上的游船提供了另外一种解读巴黎的范式。等到日头落下,点点星光和昏黄色的街灯光芒在河道上晕开柔和的色彩,河轮沿着塞纳河缓缓而行,一侧是雅致大气的奥赛博...
2020-03-18 -
传统的江南古镇,不一样的乌镇,可别小瞧它!
今天凌星向大家介绍的地方是乌镇,如果此刻的你觉得“不就是乌镇吗”,那你可就小瞧了它。是不是凭借真本事坐上古镇榜排行“第一”的宝座,各位看官你细听分说!影视:似水...
2020-03-18 -
春季踏青必去的六条徒步线路,有你向往的江南美
衢州-仙霞古道仙霞关为中国古代关隘,位于衢州市江山市保安乡南仙霞岭上,地处福建、浙江、江西三省交界处。自古就是兵家必争之地,“东南锁匙,入闽咽喉”。仙霞古道的历...
2020-03-18 -
江南一座“活着的千年古镇”,梦里的江南水乡就
江南往往代表着繁荣的经济和美丽的水乡景象,很久以来,江浙就被称为江南,江南最让人不能忘怀的就是这里的水乡古镇,中国十大水乡古镇都是在江浙一带。西塘古镇论知名度是...
2020-03-18