SpringBoot返回页面乱码解决

SpringBoot,在做全局异常处理的时候,返回中文字符串时,出现乱码情况,网上查阅资料之后,解决方式如下所示,自定义WebConfiguration继承WebMvcConfigurationSupport类(用的是SpringBoot2.0)。
(之前返回json串时遇到乱码问题,是在@RequestMapping中添加了 produces=“application/json;charset=utf-8”。 但是在处理全局异常信息是,没有@RequestMapping这个注解去添加该属性(也许是我学的太浅,还没找到吧),而且这中做法还限制了请求的数据类型。于是继续寻找合适的方法,最终找到此解决方案)

 1 import java.nio.charset.Charset;
 2 import java.util.List;
 3
 4 import org.springframework.context.annotation.Bean;
 5 import org.springframework.context.annotation.Configuration;
 6 import org.springframework.http.converter.HttpMessageConverter;
 7 import org.springframework.http.converter.StringHttpMessageConverter;
 8 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 9 import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
10
11 import com.fasterxml.jackson.databind.ObjectMapper;
12
13 import ch.qos.logback.classic.pattern.MessageConverter;
14
15 /**
16  * 解决页面返回的中文乱码。
17  * 自定义消息转换器:自定义WebConfiguration继承WebMvcConfigurationSupport类
18  * @author Administrator
19  * @date 2018年10月18日上午12:34:22
20  */
21 @Configuration
22 public class WebConfiguration extends WebMvcConfigurationSupport{
23
24     //1.这个为解决中文乱码
25     @Bean
26     public HttpMessageConverter<String> responseBodyConverter() {
27         StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
28         return converter;
29     }
30
31
32     //2.1:解决中文乱码后,返回json时可能会出现No converter found for return value of type: xxxx
33     //或这个:Could not find acceptable representation
34     //解决此问题如下
35     public ObjectMapper getObjectMapper() {
36         return new ObjectMapper();
37     }
38
39     //2.2:解决No converter found for return value of type: xxxx
40     public MappingJackson2HttpMessageConverter messageConverter() {
41         MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter();
42         converter.setObjectMapper(getObjectMapper());
43         return converter;
44     }
45
46
47
48     @Override
49     public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
50         super.configureMessageConverters(converters);
51         //解决中文乱码
52         converters.add(responseBodyConverter());
53
54         //解决: 添加解决中文乱码后的配置之后,返回json数据直接报错 500:no convertter for return value of type
55         //或这个:Could not find acceptable representation
56         converters.add(messageConverter());
57     }
58
59 }

原文地址:https://www.cnblogs.com/Jeremy2001/p/11423833.html

时间: 2024-10-15 12:58:51

SpringBoot返回页面乱码解决的相关文章

spring mvc 返回页面乱码

<filter>    <filter-name>encodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    <init-param>        <param-name>encoding</param-name>        &l

spring-mvc @responseBody注解返回中文乱码解决

在项目中能设置UTF-8基本都设置了,通过ajax请求后台的springmvc后返回中文字符串,页面显示???,解决办法是: 在方法中添加:produces = "text/html;charset=UTF-8". 具体添加位置如下: @RequestMapping(value="/getpersonLimitItemNameByDeptIdAndSglcheckid", produces = "text/html;charset=UTF-8")

springboot + shiro 权限注解、请求乱码解决、统一异常处理

springboot + shiro 权限注解.请求乱码解决.统一异常处理 前篇 后台权限管理系统 相关: spring boot + mybatis + layui + shiro后台权限管理系统 springboot + shiro之登录人数限制.登录判断重定向.session时间设置 springboot + shiro 动态更新用户信息 基于前篇,新增功能: 新增shiro权限注解: 请求乱码问题解决: 统一异常处理. 源码已集成到项目中: github源码: https://githu

Springboot集成Thymeleaf中遇到的问题------不能返回页面,只返回字符串

springboot集成thymeleaf中遇到的问题: 不能返回页面,只返回字符串 原因:在controller中使用了注解@RestController 或者注解@ResponseBody 解决方法:用 @Controller 代替 @RestController: 不使用@ResponseBody注解. 原文地址:https://www.cnblogs.com/BenNiaoXianFei/p/12672384.html

SpringMVC中使用@ResponseBody注解返回值,Ajax取得中文乱码解决方法

Spring使用AnnotationMethodHandlerAdapter的handleResponseBody方法, AnnotationMethodHandlerAdapter使用request header中"Accept"的值和messageConverter支持的MediaType进行匹配,然后会用"Accept"的第一个值写入 response的"Content-Type".一般的请求都是通过浏览器进行的,request heade

解决SpringMVC的@ResponseBody返回中文乱码

SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.converter.StringHttpMessageConverter类中可以看到如下代码: public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); 解决返回中文乱码的问题有两种,第一种是局部的,只针

Python抓取页面乱码问题的解决

import urllib2 response=urllib2.urlopen('http://house.focus.cn/') html=response.read() print html.decode('gbk') Python抓取页面乱码问题的解决,布布扣,bubuko.com

jsp页面保存到数据库有乱码解决方法

第一种: 在页面前加上 <%@ page language="java" contentType="text/html;charset=gbk" errorPage=""%> <%request.setCharacterEncoding("GBK");%> 第一行说明你的页面用的是中文编码 第二行声明你的页面传值也用中文编码 第二种 tomcat4.x支持中文传码,但5.x不支持,如果用5.0以上的版本

java中文乱码解决之道(七)-----JSP页面编码过程

我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="GBK" %> 在上面代码中有两个地方存在编码:pageEncoding.contentType的charset.其中pageEnco