最近使用了新版本的包(1.2.35),替换了原来的 FastJsonHttpMessageConverter4 ,替换后发现 converter.setDefaultCharset(Charset.forName("UTF-8")) 这句代码不起作用了,controller 返回的 json 中文字符串依然是乱码,于是进 FastJsonHttpMessageConverter 看了下,发现了如下代码:
if(headers.getContentType() == null) {
if(contentType == null || contentType.isWildcardType() || contentType.isWildcardSubtype()) {
contentType = this.getDefaultContentType(t);
}
if(contentType != null) {
headers.setContentType(contentType);
}
}
这里并没有采用 AbstractHttpMessageConverter 的 addDefaultHeaders(...) 方法来添加 contentType,而是使用了如上代码,可是这里在给 headers 添加 contentType 时并没有使用 defaultCharset 来指定编码,因此返回的 json 数据会乱码,目前的解决办法就是自定义 mediaType 给 supportedType,希望能够改善下。