本文主要是介绍SpringBoot mvc返回中文会变问号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SpringBoot mvc返回中文会变成?
排查分析
目前中文返回会变成问号? 问题原因是字符集的问题,我没有找到问题的源点,但是经过排查我发现在preHandler的生命周期的时候的确成功设置为UTF-8,但是在这个生命周期结束却变成了ISO-8859-1,我不知道如何制造的, 估计是某些第三方jar包导致目前解决方案是
解决方案A
在RequestMapping设置当前controller字符集,我也尝试过在WebMvcConfig设置全局字符集,但是这样会导致有的接口出现500 MVC无法自动转换为JSON,但是手动转换为JSON的格式确是可以得到解决,这个经历可以进一步帮我们改进。
@RestController
@RequestMapping(value = "/channels",produces = "text/plain;charset=UTF-8")
public class ChannelsController
解决方案B
使用这个方法需要手动转json,不能直接返回对象,因为这个方法会覆盖掉 Spring MVC 默认的 JSON 转换器
package com.gsxy.filesystemserver.config;import com.gsxy.filesystemserver.intercept.AuthorizationInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.nio.charset.Charset;
import java.util.List;@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {/*** 解决中文返回都是问号* @param converters*/@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));converters.add(converter);}
}
这篇关于SpringBoot mvc返回中文会变问号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!