Java 中怎么在 Spring Boot 2 和 3 中配置字符编码过滤器

风枫吖_3979

风枫吖_3979

2026-09-18

747人浏览

原创

spring boot 2/3 配置字符编码推荐使用配置文件方式:设置server.servlet.encoding.charset=utf-8、force=true、enabled=true,可统一request/response编码;若手动注册characterencodingfilter,则需禁用自动配置(server.servlet.encoding.enabled=false),并注意uri乱码需额外配置server.tomcat.uri-encoding=utf-8。

java 中怎么在 spring boot 2 和 3 中配置字符编码过滤器

Spring Boot 2 和 3 中配置字符编码过滤器,核心目标是统一请求(request)和响应(response)的字符集为 UTF-8,避免中文乱码。两种主流方式都有效,但推荐优先使用配置文件方式——简洁、稳定、符合 Spring Boot 自动配置理念。

直接在 application.properties 或 application.yml 中配置(推荐)

这是最轻量、最可靠的方式,适用于绝大多数场景。Spring Boot 2.0+ 默认已内置 CharacterEncodingFilter,只需启用并指定参数即可。

  • application.properties

server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
server.servlet.encoding.enabled=true

  • application.yml

server:
  servlet:
    encoding:
      charset: UTF-8
      force: true
      enabled: true

注意:force=true 表示强制对 request 和 response 都应用该编码,不依赖客户端是否带 Content-Typeenabled=true 是开启自动配置的关键开关(Spring Boot 2.3+ 默认为 true,但显式声明更稳妥)。

手动注册 CharacterEncodingFilter(适合需定制或兼容旧逻辑)

当需要细粒度控制(如仅对特定路径生效、调整过滤器顺序),或项目中禁用了默认编码支持(例如设置了 server.servlet.encoding.enabled=false),可手动注册过滤器。

Alibabacloud Sdk Client Initialization For Java
Alibabacloud Sdk Client Initialization For Java

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。

下载
  • 创建配置类,返回 FilterRegistrationBean<characterencodingfilter></characterencodingfilter>

@Configuration
public class CharsetConfig {
  @Bean
  public FilterRegistrationBean characterEncodingFilter() {
    CharacterEncodingFilter filter = new CharacterEncodingFilter();
    filter.setEncoding("UTF-8");
    filter.setForceEncoding(true);
    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    registrationBean.setFilter(filter);
    registrationBean.addUrlPatterns("/*");
    registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE); // 确保最早执行
    return registrationBean;
  }
}

⚠️ 特别注意:若采用此方式,务必在配置文件中设置 server.servlet.encoding.enabled=false,否则 Spring Boot 会同时加载两套编码过滤器,可能引发冲突或重复设置。

补充:URI 路径参数乱码(如 GET 请求中文路径或查询参数)

上述配置主要解决 POST 请求体及响应内容的编码。若遇到浏览器地址栏输入中文、重定向带中文参数等导致的 URI 乱码,还需额外配置 Tomcat 的 URI 编码:

  • application.properties 中添加:

server.tomcat.uri-encoding=UTF-8

该配置仅对内嵌 Tomcat 生效(Spring Boot 默认),作用是让 Tomcat 解析 URL 时按 UTF-8 解码。Jetty 或 Undertow 用户需查阅对应容器文档做等效配置。

验证是否生效的小技巧

可在 Controller 中打印原始字节验证:

  • 接收一个含中文的请求参数,用 req.getQueryString().getBytes(StandardCharsets.ISO_8859_1) 再转 UTF-8,若结果正常说明 request 编码已生效;
  • 返回 JSON 或 HTML 响应后,用浏览器开发者工具查看响应头中的 Content-Type 是否含 charset=utf-8
  • 日志中观察 CharacterEncodingFilter 是否被 Spring 容器加载(启动时有相关 INFO 日志)。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

8637

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

5842

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

5272

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

964

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

808

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1136

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2289

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

19631

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1035

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习