目前我正在尝试开始使用 Spring MVC。 我的编码有问题。 每次响应头是:
Content-Type: text/html;charset=ISO-8859-1
,所以所有非 ASCII 符号都是 ?
我也尽量不使用任何配置文件,所有配置都是程序化的
我试过:
CharacterEncodingFilter
中添加
ConfigDispatcherServletInitializer
@Override
protected Filter[] getServletFilters() {
//if encoding has issues we need to add UTF-8 encoding filter
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setForceEncoding(true);
encodingFilter.setEncoding("UTF-8");
//encoding filter must be the first one
return new Filter[]{encodingFilter,
new DelegatingFilterProxy("springSecurityFilterChain"),
};
}
在我的
WebMvcConfigurer
中:@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
}
@Bean
public StringHttpMessageConverter stringHttpMessageConverter() {
return new StringHttpMessageConverter(StandardCharsets.UTF_8);
}
resolver.setCharacterEncoding("UTF-8");
在我的
WebSecurityConfigurerAdapter
http.addFilterBefore(new CharacterEncodingFilter("UTF-8", true, true), ChannelProcessingFilter.class);
我还尝试在我的 tomcat 运行配置中添加 VM 选项
-Dfile.encoding=UTF-8
对我来说没什么用,响应头字符集是
ISO-8859-1
All files encoding is
UTF-8
, Intellij Idea option "Default encoding for options file" 也是 UTF-8
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
tomcat版本为9.0.74,JDK为v11,spring版本为5.3.27