在 Spring Boot 中解决中文乱码问题,通常需要配置编码设置。以下是几个常见的步骤来处理这些问题:
- 设置
application.properties
或application.yml
文件:
# application.properties
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
或者
# application.yml
server:
servlet:
encoding:
charset: UTF-8
enabled: true
- 配置
CharacterEncodingFilter
: 如果使用application.properties
或application.yml
无法解决问题,可以手动配置CharacterEncodingFilter
。
在@Configuration
类中添加以下 Bean 配置:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.config.annotation.RequestMappingHandlerAdapter;
import javax.servlet.Filter;
import org.springframework.web.filter.CharacterEncodingFilter;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public Filter characterEncodingFilter() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
filter.setForceEncoding(true);
return filter;
}
}
- 确保 HTML 文件使用 UTF-8 编码: 在 HTML 文件中添加以下 meta 标签,确保浏览器按 UTF-8 编码解析页面:
<meta charset="UTF-8">
- 数据库编码设置: 确保数据库的字符集设置为 UTF-8,以避免在存储和检索数据时出现乱码。对于 MySQL,确保数据库和表的字符集为
utf8mb4
。
ALTER DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;