SpringBoot中文乱码
时间: 2025-06-01 13:08:14 浏览: 46
### SpringBoot 中文乱码解决方案
在 SpringBoot 项目中,中文乱码问题可能出现在多个场景下,例如文件上传、表单提交、接口返回值等。以下是几种常见的解决方法:
#### 1. 配置全局字符编码
可以在 `application.properties` 或 `application.yml` 文件中设置全局字符编码为 UTF-8,以确保所有请求和响应都使用统一的编码格式[^3]。
```properties
# 全局字符编码设置
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8
```
#### 2. 添加依赖解决 Tomcat 编码问题
如果使用的是 Spring Boot 2.x 版本,可以尝试在 `pom.xml` 文件中添加以下依赖来解决 Tomcat 的编码问题[^1]。
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.5.5</version>
</dependency>
```
#### 3. 使用拦截器解决中文乱码
通过自定义拦截器或配置类,可以强制设置请求和响应的字符编码为 UTF-8。以下是一个示例代码[^5]:
```java
package com.xz.util;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.nio.charset.Charset;
import java.util.List;
@Configuration
public class CharsetConfig implements WebMvcConfigurer {
@Bean
public HttpMessageConverter<String> responseBodyConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
return converter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(responseBodyConverter());
}
}
```
#### 4. 处理国际化资源文件中的乱码
如果在国际化资源文件(如 `.properties` 文件)中遇到中文乱码问题,可以尝试将文件保存为 UTF-8 格式,并在读取时确保编码正确[^2]。此外,Spring Boot 提供了自动加载机制,可以通过以下方式验证:
```java
package com.cnstar.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest(classes = TestApplication.class)
@RunWith(SpringRunner.class)
public class CnstarTest {
@Value("${name}")
private String name;
@Test
public void test1() {
System.out.println("中文内容:" + name);
}
}
```
#### 5. 解决页面显示乱码
如果页面上显示问号(`?`),可能是由于服务器未正确解析编码导致的。此时可以尝试以下两种方案[^4]:
- **方案一**:在前端页面中显式指定字符集为 UTF-8。
```html
<meta charset="UTF-8">
```
- **方案二**:在后端代码中强制设置响应头的字符集。
```java
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
```
---
### 注意事项
- 如果上述方法仍无法解决问题,建议检查项目的整体编码设置,包括 IDE 的文件编码、数据库连接编码等。
- 确保所有涉及中文处理的地方均使用 UTF-8 编码。
---
阅读全文
相关推荐



















