Springboot 中文乱码问题

最近刚好项目上遇到了中文乱码问题,也刚好记录一下

检查编译环境的编码:

File --> Setttings --> Editor --> File Encodings,这下边设置三个地方的编码格式

配置JDK全局编码:

如图在系统环境变量中增加一个变量:JAVA_TOOL_OPTIONS 值为 -Dfile.encoding=UTF-8,如果是项目发布,就在启动的时候加入该JVM 参数

设置maven打包插件的编码

<plugin>
   <!--打包成可执行jar-->
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
      <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
   </configuration>
   <executions>
      <execution>
         <goals>
            <goal>repackage</goal>
         </goals>
      </execution>
   </executions>
</plugin>

在application.properties文件中加入下面内容

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8

但是貌似有时候不起作用,因为application.properties 在IDEA中好像有BUG,最好是转为yml文件来设置

如果连接有数据库,注意看数据库里面的编码集以及看看数据快照是否已经是乱码了,而不是应用导致的

以上就是正常来说基本就可以搞定了,如果还有乱码可以继续尝试下面的方式

修改controller的@RequestMapping

produces="text/plain;charset=UTF-8"

在配置类中增加如下代码:

@Configuration
public class CustomMVCConfiguration extends WebMvcConfigurerAdapter {

    @Bean
    public HttpMessageConverter<String> responseBodyConverter() {
        StringHttpMessageConverter converter = new StringHttpMessageConverter(
                Charset.forName("UTF-8"));
        return converter;
    }

    @Override
    public void configureMessageConverters(
            List<HttpMessageConverter<?>> converters) {
        super.configureMessageConverters(converters);
        converters.add(responseBodyConverter());
    }

    @Override
    public void configureContentNegotiation(
            ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false);
    }
}

猜你喜欢

转载自blog.csdn.net/wangxuelei036/article/details/107252484