本人新手,刚刚学习SpringBoot,在作全局异常处理的时候,返回中文字符串时,出现乱码状况,网上查阅资料以后,解决方式以下所示,自定义WebConfiguration继承WebMvcConfigurationSupport类(用的是SpringBoot2.0)。
(以前返回json串时遇到乱码问题,是在@RequestMapping中添加了 produces=“application/json;charset=utf-8”。 可是在处理全局异常信息是,没有@RequestMapping这个注解去添加该属性(也许是我学的太浅,还没找到吧),并且这中作法还限制了请求的数据类型。因而继续寻找合适的方法,最终找到此解决方案)java
import java.nio.charset.Charset;
import java.util.List;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import com.fasterxml.jackson.databind.ObjectMapper;
import ch.qos.logback.classic.pattern.MessageConverter;
/**
* 解决页面返回的中文乱码。
* 自定义消息转换器:自定义WebConfiguration继承WebMvcConfigurationSupport类
* @author Administrator
* @date 2018年10月18日上午12:34:22
*/
@Configuration
public class WebConfiguration extends WebMvcConfigurationSupport{
//1.这个为解决中文乱码
@Bean
public HttpMessageConverter responseBodyConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
return converter;
}
//2.1:解决中文乱码后,返回json时可能会出现No converter found for return value of type: xxxx
//或这个:Could not find acceptable representation
//解决此问题以下
public ObjectMapper getObjectMapper() {
return new ObjectMapper();
}
//2.2:解决No converter found for return value of type: xxxx
public MappingJackson2HttpMessageConverter messageConverter() {
MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(getObjectMapper());
return converter;
}
@Override
public void configureMessageConverters(List> converters) {
super.configureMessageConverters(converters);
//解决中文乱码
converters.add(responseBodyConverter());
//解决: 添加解决中文乱码后的配置以后,返回json数据直接报错 500:no convertter for return value of type
//或这个:Could not find acceptable representation
converters.add(messageConverter());
}
}