tomcat 乱码
时间: 2025-04-26 13:12:52 浏览: 23
### 解决 Tomcat 中的中文乱码问题
#### 配置 Web 应用程序以处理 GET 和 POST 请求中的中文字符
对于GET请求引起的URL参数中文乱码问题,通常可以通过调整客户端发送数据的方式或者服务器端解码逻辑来解决。而对于POST请求,则可以在`web.xml`中配置过滤器,确保所有HTTP请求都采用UTF-8编码[^1]。
```xml
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
#### 修改 Tomcat 的 server.xml 文件
为了防止Tomcat接收到来自浏览器通过URL编码后的特殊字符(如汉字)被错误解析,在`$CATALINA_HOME/conf/server.xml`文件内的Connector标签里加入属性`URIEncoding="UTF-8"`可以有效避免这种情况的发生[^4]:
```xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
```
#### 设置 JSP 页面默认编码方式
为了让JSP页面能够正确展示中文内容,应该在每一页顶部声明其使用的字符集为UTF-8,并且设置响应头告知浏览器该页的内容类型及编码格式[^2]:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
```
#### 处理文件上传下载过程中的名称乱码现象
当涉及到文件名中含有非ASCII字符的情况下,无论是上传还是下载操作都有可能遇到乱码难题。一种常见的做法是在构建响应头部时利用Java内置函数对文件名进行转义处理,比如使用`URLEncoder.encode()`方法将文件名转换成适合网络传输的形式;而在读取上传文件的时候则相反地调用`URLDecoder.decode()`来进行还原。
```java
// 下载文件时设置响应头
String filename = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("content-disposition", "attachment;filename=\"" + filename + "\"");
// 上传文件获取原始文件名
String originalFilename = URLDecoder.decode(file.getOriginalFilename(), "UTF-8");
```
阅读全文
相关推荐

















