在 Debian 上部署 JSP(通常是 Tomcat) 出现乱码,一般是编码不一致导致的。下面按常见原因一步步解决。
locale
如果不是 UTF-8,建议设置为:
sudo apt install locales
sudo dpkg-reconfigure locales
# 选择 zh_CN.UTF-8 或 en_US.UTF-8
server.xml编辑:
/etc/tomcat9/server.xml
# 或
/opt/tomcat/conf/server.xml
在 Connector 中加:
URIEncoding="UTF-8"
示例:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
catalina.sh(JVM 编码)/etc/default/tomcat9
或在 catalina.sh 中加:
JAVA_OPTS="-Dfile.encoding=UTF-8"
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page pageEncoding="UTF-8" %>
<meta charset="UTF-8">
在 web.xml 中加过滤器(推荐):
<filter>
<filter-name>encoding</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>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
或 Servlet 中:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
MySQL 连接串:
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8
数据库/表:
CREATE DATABASE db CHARACTER SET utf8mb4;
确保 JSP / Java 文件是 UTF-8:
file your.jsp
不是的话用编辑器转成 UTF-8(无 BOM)。
如果你能贴出:
我可以直接帮你精确改。