在 Debian 上跑 JSP(通常是 Tomcat) 出现乱码,一般是编码不一致导致的。下面按常见原因给你一套排查和解决办法。
先分清是哪种乱码:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
pageEncoding:JSP 文件本身的编码contentType:发给浏览器的编码✅ 两个都写 UTF-8
<meta charset="UTF-8">
编辑:
/etc/tomcat9/server.xml
(版本可能是 tomcat8 / tomcat10)
找到 Connector,加:
URIEncoding="UTF-8"
例如:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
重启 Tomcat:
systemctl restart tomcat9
在 web.xml 加:
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
locale
如果不是 UTF-8:
sudo dpkg-reconfigure locales
勾选:
en_US.UTF-8
zh_CN.UTF-8
然后:
export LANG=zh_CN.UTF-8
show variables like 'character%';
应为:
utf8mb4
连接 URL 加:
?useUnicode=true&characterEncoding=UTF-8
pageEncoding="UTF-8"URIEncoding="UTF-8"locale 是 UTF-8如果你愿意,可以告诉我:
我可以直接帮你改配置。