spring MappingJackson2HttpMessageConverter 乱码问题说明:
application/json ;charset=GBK 指定MediaType(坑)
坑:跟踪代码发现,Spring使用的Jackson jar 包支持编码格式只有UTF-8,UTF-16,UTF-32,当指定的编码格式匹配不到时默认使用UTF-8,此处GBK不会生效。
Spring使用默认的UTF-8编码,但由于mediaType使用指定application/json ;charset=GBK客户端解码根据回复消息包头里指定的GBK进行解码,那么一定会是乱码。
结论:MappingJackson2HttpMessageConverter 无法返回GBK编码
Spring默认配置情况下,按顺序加载以下转换器(具体含义见spring文档HTTP Message Conversion 章节)
StringHttpMessageConverter
FormHttpMessageConverter
ByteArrayHttpMessageConverter
MarshallingHttpMessageConverter
MappingJackson2HttpMessageConverter
SourceHttpMessageConverter
BufferedImageHttpMessageConverter