Springboot中国語の文字化けし問題

2193 ワード

最近ちょうどプロジェクトの上で中国語の文字化けしの問題に出会って、同じくちょうど記録します

コンパイル環境のエンコーディングを確認します。


File-->Settings-->Editor-->File Encodingsの3箇所のエンコード形式を設定します

JDKグローバルエンコーディングの構成:


図のようにシステム環境変数に変数を追加します:JAVA_TOOL_OPTIONS値は-Dfile.Encoding=UTF-8、プロジェクトリリースの場合は起動時にそのJVMパラメータを追加

mavenパッケージプラグインのエンコードの設定


   
   org.springframework.boot
   spring-boot-maven-plugin
   
      -Dfile.encoding=UTF-8
   
   
      
         
            repackage
         
      
   

アプリケーションで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

しかし、アプリケーションのために機能しないことがあります.propertiesはIDEAにBUGがあるようですが、ymlファイルにして設定した方がいいです
データベースに接続されている場合は、データベース内のエンコードセットを確認し、アプリケーションによるものではなく、データスナップショットが文字化されているかどうかを確認します.
以上は正常に言えば基本的にできますが、文字化けがあれば次の方法を試してみてください.

コントロールの@RequestMappingの変更

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

構成クラスに次のコードを追加します。

@Configuration
public class CustomMVCConfiguration extends WebMvcConfigurerAdapter {

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

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

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