博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot更改HttpMessageConverters使用FastJson出现乱码问题
阅读量:5147 次
发布时间:2019-06-13

本文共 2694 字,大约阅读时间需要 8 分钟。

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
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;

 

 

 

  小白看问题,浅显不深究

如若表达不清晰或存疑,可留言指教!

      感谢来过

  放松一下啦,找找下图几个方脸吧!

————————————————————————————————————————————————

      (^ _ ^)  (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)

       (^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)[^ _ ^](^ _ ^)

        (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)

          (^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)

            (^ _ ^)(^ _ ^)(^ _ ^)

              (^ _ ^)[^ _ ^]

                  (^ _ ^)

————————————————————————————————————————————————

 

转载于:https://www.cnblogs.com/china-baizhuangli/p/8630787.html

你可能感兴趣的文章
netstat用法及TCP state解析
查看>>
[转自小龙博客]优酷视频自动播放办法
查看>>
深入理解事件捕获冒泡
查看>>
软件设计入门2 数据库设计
查看>>
文件信息
查看>>
Hibernate 一对一外键单向关联
查看>>
笔记1
查看>>
Link-cut-tree 学习记录 & hdu4010
查看>>
ECharts使用小结
查看>>
JAVA实现MD5加密算法(使用MessageDigest)
查看>>
壮哉大微软,.Net人的春天来了,你准备好了嘛!
查看>>
Spine学习五- spine动画融合
查看>>
Python科学计算工具包
查看>>
2-4 zookeeper配置文件介绍,运行zk
查看>>
00_前情回顾
查看>>
运行项目psychologicalTest
查看>>
pgrep,pkill
查看>>
filter-grok,dissect匹配数据
查看>>
java 排序3 插入排序
查看>>
旋转90度也可以,Lumia的四大重置方式
查看>>