在 Java + Tomcat 环境下出现乱码,通常不是“某一个原因”,而是多个环节编码不一致导致的。下面按常见原因 → 解决方式给你系统梳理一下。
现象:表单提交、URL 参数中文乱码
Tomcat 默认使用 ISO-8859-1 解码 URL
解决方式(Tomcat 8.5+ 已默认 UTF-8,老版本需要改)
conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8" />
必须在读取参数前设置
request.setCharacterEncoding("UTF-8");
⚠️ 注意:
request.getParameter() 之前现象:浏览器显示 ??? 或 中文乱码
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
<%@ page contentType="text/html;charset=UTF-8" %>
现象:存进去乱码 / 读出来乱码
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8
CREATE DATABASE db CHARACTER SET utf8mb4;
现象:log、properties 文件中文乱码
Settings → File Encodings → UTF-8
指定编码:
<encoder>
<charset>UTF-8</charset>
</encoder>
推荐统一过滤器
@Bean
public FilterRegistrationBean<CharacterEncodingFilter> filter() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
filter.setForceEncoding(true);
FilterRegistrationBean<CharacterEncodingFilter> bean =
new FilterRegistrationBean<>(filter);
bean.addUrlPatterns("/*");
return bean;
}
| 检查点 | 是否 UTF-8 |
|---|---|
| Tomcat server.xml | ✅ |
| request / response | ✅ |
| JSP / HTML | ✅ |
| 数据库 | ✅ |
| JDBC URL | ✅ |
| IDE 文件编码 | ✅ |
Tomcat 乱码 = 编码不一致
请求 → 处理 → 响应 → 存储
每一层都必须是 UTF-8
如果你愿意,可以把:
发给我,我可以精准定位是哪一步乱码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。