Spring MVC+Tomcat UTF-8编码异常求助:响应始终为ISO-8859-1
Spring MVC 响应编码异常问题求助
我正在上手Spring MVC开发,遇到了编码异常问题:每次响应头的Content-Type都固定为text/html;charset=ISO-8859-1,导致所有非ASCII字符显示为?。我全程采用纯编程式配置,没有使用任何XML或properties配置文件,已经尝试了以下多种方案,但均无效:
- 在
ConfigDispatcherServletInitializer中添加CharacterEncodingFilter:
@Override protected Filter[] getServletFilters() { // 编码问题处理:添加UTF-8编码过滤器 CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter(); encodingFilter.setForceEncoding(true); encodingFilter.setEncoding("UTF-8"); // 编码过滤器必须放在第一位 return new Filter[]{encodingFilter, new DelegatingFilterProxy("springSecurityFilterChain"), }; }
- 在
WebMvcConfigurer中配置消息转换器:
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); }
- 添加
StringHttpMessageConverterBean:
@Bean public StringHttpMessageConverter stringHttpMessageConverter() { return new StringHttpMessageConverter(StandardCharsets.UTF_8); }
- 设置Thymeleaf ViewResolver的编码:
resolver.setCharacterEncoding("UTF-8");
- 在
WebSecurityConfigurerAdapter中添加编码过滤器:
http.addFilterBefore(new CharacterEncodingFilter("UTF-8", true, true), ChannelProcessingFilter.class);
除此之外,我还在Tomcat运行配置中添加了VM选项-Dfile.encoding=UTF-8,但响应头的字符集依然是ISO-8859-1。
我的本地配置均已设置为UTF-8:
- 所有文件编码为UTF-8
- Intellij Idea的"Default encoding for options file"设置为UTF-8
- Maven编译编码属性配置为
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - 所有HTML文件都包含编码元标签
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
环境信息:Tomcat 9.0.74、JDK 11、Spring 5.3.27
内容的提问来源于stack exchange,提问作者Blc Dragon
相关产品推荐
相关产品推荐

