分享知识-快乐自己:spring_Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson
心路历程:
在Controller中return 对象的时候,对象中的属性值中文部分在浏览器中 显示为问号??
然后结果是这样的:??
尝试排查原因:
中文乱码常有以下三种:
1.request、response里面的这个编码设置
2.Tomcat 编码设置
3.数据库编码设置
逐一排查:首先我直接return “中文”;结果还是乱码。数据库编码 排除;
然后我写了个过滤器:
- @WebFilter(filterName = "myFilter", urlPatterns = "/*")
- public class MyFilter implements Filter {
- @Override
- public void destroy() {
- System.out.println("过滤器销毁");
- }
- @Override
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- System.out.println("执行过滤操作");
- response.setCharacterEncoding("UTF-8");
- System.out.println(response.getCharacterEncoding());
- request.setCharacterEncoding("UTF-8");
- System.out.println(request.getCharacterEncoding());
- chain.doFilter(request, response);
- }
- @Override
- public void init(FilterConfig config) throws ServletException {
- System.out.println("过滤器初始化");
- }
- }
失败,返回依然是乱码;
接着尝试:
return new String("中文".getBytes(), "UTF-8");
失败,返回依然是乱码;
接着尝试:
produces = { "application/json;charset=UTF-8" }
@RequestMapping(value = "/test", produces = { "application/json;charset=UTF-8" }
成功是成功了,可是这样感觉很奇怪,总不能每一个RequestMapping 都这样注解吧。
然后我就发现我封装的jsonVO中使用的是fastjson 会不会是这个问题呢?
springboot 引入的json是 Jackjson,撞墙的想法都有了。
果断处理:Application extends WebMvcConfigurerAdapter
重写方法。
- @Override
- public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
- super.configureMessageConverters(converters);
- FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
- FastJsonConfig fastJsonConfig = new FastJsonConfig();
- fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
- fastConverter.setFastJsonConfig(fastJsonConfig);
- converters.add(fastConverter);
- }
可以了。
如果觉得继承这个WebMvcConfigurerAdapter类影响你继承其他类,也可以写个@bean 放在Application 中
retunr HttpMessageConverter 类型就好;
总结:
1.添加 produces = { "application/json;charset=UTF-8" }
2.重写configureMessageConverters方法;
3.@bean HttpMessageConverter ;
分享知识-快乐自己:spring_Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson的更多相关文章
- 避免css中文字体在浏览器中解析成乱码
许多童鞋在写CSS的时候,设置中文字体常常使用中文字符,例如font-family:”黑体”,这样我们在浏览器中看到的是什么样子的呢 ? 如果不想自己写的界面在浏览器字体声明上有异常,建议在书写css ...
- servlet中通过getWriter()获取out返回给浏览器出现中文乱码问题
感谢博主https://blog.csdn.net/louyongfeng3613/article/details/50160317 在Servlet编程中,经常需要通过response对象将一些信息 ...
- jquery ajax 返回值 中文时乱码或变成问号解决方法
转载自jquery的 ajax返回值为中文时乱码解决方法 用jquery的ajax,遇到个问题,服务器端从数据库取到的数据没有出现中文乱码问题(日志打出来是没有乱码的),但是异步传到客户的时候却出现了 ...
- 解析好的静态页面.shtml浏览器无法解析.需要apache解析后再返回给浏览器
解析好的静态页面.shtml浏览器无法解析.需要apache解析后再返回给浏览器 让Apache支持SHTML(SSI)的配置方法 http.conf放开addtype text/html .shtm ...
- JMeter中文返回乱码
JMeter中文返回乱码 结果树响应数据中文返回乱码 其实有几个方法: 在线程组->http请求的字符集里设置 在http 消息管理头中设置 3.如果以上方法还没有解决,请打开安装目录 ...
- jmeter返回结果是乱码及Unicode转中文
1.结果树中有乱码的处理方式 到bin目录下面修改jmeter的配置文件 使用jmeter进行压测时,如果响应数据的返回结果有乱码,则修改jmeter.properties文件中的该字段的值改为utf ...
- 分享知识-快乐自己:SpringMVC 底层执行原理解析
底层实现原理图: 观看底层代码: 1):打开 web.xml 文件 2):按住 Ctrl + 鼠标左键 进入底层查看源码 3):按住 Ctrl+o 找到对应的方法doDispatch 5): ...
- ASP.NET开发在JavaScript有中文汉字时出现乱码时简单有效的解决
一般情况在使用ASP.NET开发使用JavaScript有中文汉字时不会出现乱码情况,比如:alert('您看到我了吗?');这样直接输入中文汉字的代码中是不会出现乱码的,如果出现了,一是检查Web. ...
- iphone 浏览器自动解析数字为号码解决方法
iphone 浏览器自动解析数字为号码解决方法 www.MyException.Cn 网友分享于:2015-10-09 浏览:0次 iphone 浏览器自动解析数字为号码解决办法 在工作中遇到 ...
随机推荐
- vuex Payload 荷载
1.payload payload:有效载荷,即记录有效信息的部分. 通常在传输数据时,为了使数据传输更可靠,要把原始数据分批传输,并且在每一批数据的头和尾都加上一定的辅助信息,比如这一批数据量的大小 ...
- (转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以 ...
- js:Razor视图下服务器代码给Javascript变量赋值
namespace Razor.Controllers { public class JSController : Controller { public ActionResult Index() { ...
- Ubuntu14.04 x86_64 install Xen
Recommended reference: https://help.ubuntu.com/community/Xen Step One: Install Ubuntu14.04 on your c ...
- View的滚动原理简单解析
一直对View的滚动了解的不深,说明确了吧也能说出个所以然来,所以我就花了点时间做了一个小小的总结,言归正传,view的滑动分为下面三种: 1)View本身不滚动,指滚动View的内容,这也是View ...
- css 使表格随着内容自动适应宽度
所谓难而不会,会儿不难.这个问题让我纠结了很长时间,一句css解决了,仅仅靠一个属性 td { white-space: nowrap; }
- Spring Resource框架体系介绍
Resource介绍 在使用spring作为容器进行项目开发中会有很多的配置文件,这些配置文件都是通过Spring的Resource接口来实现加载,但是,Resource对于所有低级资源的访问都不够充 ...
- linux下的显示有中国农历的日历ccal
1.linux下的显示有中国农历的日历ccal
- 【Selenium + Python】之如何获取最新的报告以及os.path.getmtime与os.path.getctime的区别
import os def new_file(test_dir): #列举test_dir目录下的所有文件(名),结果以列表形式返回. lists=os.listdir(test_dir) #sort ...
- gdb ../sysdeps/i386/elf/start.S: No such file or directory
使用 gdb 调试的时候 输入 l 之后出现下列信息 (gdb) l 1 ../sysdeps/i386/elf/start.S: No such file or directory. in ../s ...