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);
}
}
図のようにシステム環境変数に変数を追加します: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);
}
}
org.springframework.boot
spring-boot-maven-plugin
-Dfile.encoding=UTF-8
repackage
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);
}
}
@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);
}
}