SpringBoot更改HttpMessageConverters使用FastJson出现乱码问题
1、出现问题的现象!如下截图,使用SpringBoot 进行开发,接口返回的内容出现中文乱码?
接口内容想要返回的内容:
页面返回内容:
惊喜不?意外不?
为什么出现这个情况?不例外的话,很多同事都是替换了SpringBoot自带的Json框架为FastJson解析工具了。
在替换的过程中,没有注意编码格式造成的!
@SpringBootApplication(scanBasePackages = {"com.spring.resource.cloud*"})
@ServletComponentScan({"com.spring.resource.cloud*"})
public class ResourceUploadGuestApplication { public static void main(String[] args) {
SpringApplication.run(ResourceUploadGuestApplication.class, args);
} @Bean
public HttpMessageConverters fastJsonHttpMessageConverters(){
//创建FastJson信息转换对象
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//创建Fastjosn对象并设定序列化规则
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//规则赋予转换对象
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
return new HttpMessageConverters(fastJsonHttpMessageConverter);
}
}
2、解决问题呗!
我们从上面的代码可以看出,在进行数据转换的时候,直接食用FastJson进行替换了原本的默认转换工具。那既然出现问题,一定是新的转换工具出现了问题!
那我们在设定转换过程,是不是可以设定具体转换之后的数据类型及编码格式呢?答案是肯定的!
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters(){
//创建FastJson信息转换对象
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); //创建Fastjosn对象并设定序列化规则
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
// 中文乱码解决方案
List<MediaType> mediaTypes = new ArrayList<>();
mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);//设定json格式且编码为UTF-8
fastJsonHttpMessageConverter.setSupportedMediaTypes(mediaTypes); //规则赋予转换对象
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); return new HttpMessageConverters(fastJsonHttpMessageConverter); }
这样就解决了乱码问题了!
3、为什么这么修改呢?
如果你看到结果之后,想知道为啥这么修改的话,debug!
初始化的时候,我们看到
SupportedMediaTypes值为 */* 这样对于很多浏览器是识别不了具体的格式和编码类型的,所以出现乱码和非格式化的样子!
(2)指定格式个编码类型之后,出现了JSON格式和UTF-8编码格式,其实对应枚举对象就是
/**
* Public constant media type for {@code application/json;charset=UTF-8}.
*/
public final static MediaType APPLICATION_JSON_UTF8;
小白看问题,浅显不深究
如若表达不清晰或存疑,可留言指教!
感谢来过
放松一下啦,找找下图几个方脸吧!
————————————————————————————————————————————————
(^ _ ^) (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)[^ _ ^](^ _ ^)
(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)
(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^]
(^ _ ^)
————————————————————————————————————————————————
最新文章
- eclipse配置tomcat
- 关于margin的问题
- Mysql: ERROR 1030 (HY000): Got error 28 from storage engine
- MongoDB.WebIDE:升级版的Mongodb管理工具
- 解决Volley请求网络数据返回的数据乱码
- hdu 2897(威佐夫博奕变形)
- iOS 全局竖屏 单个viewcontroller点击按钮支持横屏
- 关于docker中的几个小命令
- android 点击重新加载界面设计
- php 燕十八 观察者模式代码例子
- 工业CF卡与商业CF卡对比
- express手工实现session原理
- 201521123064 《Java程序设计》第11周学习总结
- linux-非root用户运行tomcat
- Git学习(一):初始化仓库、添加文件、版本回退
- 自学Linux Shell9.1-安装软件程序
- 高效能程序员的七个习惯【csdn】
- maven 添加jdbc6
- python类的内置方法
- PAT甲题题解-1106. Lowest Price in Supply Chain (25)-(dfs计算树的最小层数)