在 Debian 上运行 JSP(通常是 Tomcat)出现中文乱码,一般不是“Debian 本身”的问题,而是字符编码配置不一致导致的。下面按常见原因逐一说明。
JSP 默认编码可能是 ISO-8859-1,中文就会乱码。
✅ 解决:在 JSP 顶部加:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
即使 JSP 是 UTF-8,浏览器仍可能误判。
✅ 在 <head> 中加:
<meta charset="UTF-8">
Tomcat 默认对 URL 和请求参数使用 ISO-8859-1。
server.xml<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
重启 Tomcat:
systemctl restart tomcat9
在 Servlet 或 JSP 中:
request.setCharacterEncoding("UTF-8");
⚠️ 必须在 第一次使用 request 之前
如果数据从数据库读出来就乱:
utf8mb4jdbc:mysql://localhost/db?useUnicode=true&characterEncoding=UTF-8
检查:
locale
如果不是 UTF-8:
dpkg-reconfigure locales
选择 zh_CN.UTF-8 或 en_US.UTF-8
用 file 检查:
file xxx.jsp
转换:
iconv -f GBK -t UTF-8 xxx.jsp -o xxx_utf8.jsp
pageEncoding="UTF-8"<meta charset="UTF-8">URIEncoding="UTF-8"request.setCharacterEncoding("UTF-8")Debian + JSP 中文乱码,90% 是“编码不一致”,不是系统问题。
如果你愿意,可以把:
发出来,我可以帮你精准定位。