问题描述
在项目里自定义了一个ExceptionHandler,结果被ExceptionHandler处理的错误里中文全部变成了问号。
原因分析
ExceptionHandler使用的StringHttpMessageConverter类默认使用的不是UTF-8字符,不支持中文导致中文全变成问号。
解决
在WebMvcConfig里配置所有HttpMessageConverter的默认编码集为UTF-8。
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for(HttpMessageConverter httpMessageConverter:converters){
if(StringHttpMessageConverter.class.isAssignableFrom(httpMessageConverter.getClass())){
((StringHttpMessageConverter)httpMessageConverter).setDefaultCharset(StandardCharsets.UTF_8);
}
}
}
}