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;
小白看问题,浅显不深究
如若表达不清晰或存疑,可留言指教!
感谢来过
放松一下啦,找找下图几个方脸吧!
————————————————————————————————————————————————
(^ _ ^) (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)[^ _ ^](^ _ ^)
(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)
(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^]
(^ _ ^)
————————————————————————————————————————————————
SpringBoot更改HttpMessageConverters使用FastJson出现乱码问题的更多相关文章
- 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!
在我们使用MySQL数据库时,字符乱码,对我们来说是一个很头疼的问题.今天笔者就来教大家如何彻底解决更改默认字符集以及字符乱码问题. 当我们使用压缩包进行MySQL安装后,系统会使用默认的字符集,这时 ...
- springboot使用fastjson中文乱码解决方法 【转载】
以前使用fastjson替换jackson时,没有直接在页面打印过json,都是js使用没有出现乱码,偶然 打印出来出现了中文乱码 之前使用的配置方式 @Configuration public cl ...
- Springboot使用alibaba的fastJson,@JSONField不起作用的问题
在Springboot中默认的JSON解析框架是jackson 今天引入alibaba的fastjson,使用@JSONField(serialize=false),让@RestController转 ...
- FastJson中文乱码
初学springboot使用fastJson替换默认的jackson后出现中文乱码 解决方式1: import java.util.ArrayList; import java.util.List; ...
- springboot整合redis,并解决乱码问题。
热烈推荐:超多IT资源,尽在798资源网 springboot 版本为 1.5.9 //如果是2.x 修改 pom.xml 也可切换成 1.5.9 <parent> <groupId ...
- springboot升级2.0 fastjson报错? 2.0以上应该怎么整合fastjson?
SpringBoot2.0如何集成fastjson?在网上查了一堆资料,但是各文章的说法不一,有些还是错的,可能只是简单测试一下就认为ok了,最后有没生效都不知道.恰逢公司项目需要将JackSon换成 ...
- SpringBoot集成thymeleaf(自定义)模板中文乱码的解决办法
楼主今天在学习SpringBoot集成thymelaf的时候报了中文乱码的错误,经过网上的搜索,现在得到解决的办法,分享给大家: package com.imooc.config; import or ...
- 使用spring-boot 国际化配置所碰到的乱码问题
写好html静态页面 , 也加上了编码格式 , 获取国际化展示在浏览器中还是存在乱码 , 开始以为是浏览器编码格式问题 , 做过处理后任没有得到解决 , 具体的处理方案如下: <meta ht ...
- SpringBoot整合Redis在可视化工具乱码问题,以及常用的api
pom依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spr ...
随机推荐
- 一个简单的Springmvc应用开发例子
SpringMVC应用的配置步骤: 1,将所有的jar包导入到lib文件夹下: jar在spring框架包-->libs-->所有的 ...
- css进行中打点效果
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- MySQL参数max_connect_errors分析释疑
最近一MySQL服务器,由于一些特殊因素遇到"ERROR 1129 (00000): Host 'xxx' is blocked because of many connection e ...
- RMAN还原时注意set newname时文件名不要有空格
今天遇到一个非常奇怪的现象,查看ORACLE数据库的一个文件,明明这个文件是存在的,但是使用ls -lrt 查看都显示这个文件不存在.很是纳闷! 后面发现在终端输入文件名后并使用tab键时,发现文 ...
- 利用Caffe训练模型(solver、deploy、train_val)+python使用已训练模型
本文部分内容来源于CDA深度学习实战课堂,由唐宇迪老师授课 如果你企图用CPU来训练模型,那么你就疯了- 训练模型中,最耗时的因素是图像大小size,一般227*227用CPU来训练的话,训练1万次可 ...
- ffmpeg tutorial01 再分析
如下图
- Linux系统 awk sed R脚本 python脚本传入变量
sed 传入变量: chrI="chr2";sed -n "/$chrI/p" clippointpos.csv #变量用$var表示,把sed的单引号变为双 ...
- WPF基础篇之命名空间
WPF中XAML与C#一样,也有自己独立的编译器.XAML会被解析和编译,最终形成微软的中间语言存储在程序集中.在解析和编译XAML的语言过程中,我们经常需要告诉编译器一些重要的信息,比如XAML代码 ...
- Struts2【开发Action】知识要点
前言 前面Struts博文基本把Struts的配置信息讲解完了.....本博文主要讲解Struts对数据的处理 Action开发的三种方式 在第一次我们写开发步骤的时候,我们写的Action是继承着A ...
- 【CJOJ1644】【洛谷2758】编辑距离
题面 题目描述 设A和B是两个字符串.我们要用最少的字符操作次数,将字符串A转换为字符串B.这里所说的字符操作共有三种: 1.删除一个字符: 2.插入一个字符: 3.将一个字符改为另一个字符: 皆为小 ...