在 Debian 上配置 Tomcat 的编码(字符集),通常是为了解决中文乱码、请求/响应编码不一致等问题。下面按常见场景说明怎么做(以 Tomcat 9/10 为例,路径可能略有差异)。
server.xml编辑 Tomcat 的 server.xml(一般在 /etc/tomcat9/server.xml 或 /opt/tomcat/conf/server.xml):
sudo nano /etc/tomcat9/server.xml
找到 Connector(如 8080 端口),添加:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
说明:
URIEncoding="UTF-8":GET 请求参数编码useBodyEncodingForURI="true":POST 和 GET 统一编码web.xml在 conf/web.xml 中增加(或确认)JSP 编码:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
Debian 默认 JVM 编码可能不是 UTF-8。
编辑:
sudo nano /etc/default/tomcat9
添加或修改:
JAVA_OPTS="-Dfile.encoding=UTF-8"
如果是手动安装的 Tomcat:
export JAVA_OPTS="-Dfile.encoding=UTF-8"
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
<%@ page contentType="text/html;charset=UTF-8" %>
确保 Debian 系统本身支持 UTF-8:
locale
如果不是 UTF-8,可设置:
sudo dpkg-reconfigure locales
选择 en_US.UTF-8 或 zh_CN.UTF-8
sudo systemctl restart tomcat9
| 场景 | 解决方式 |
|---|---|
| GET 参数乱码 | URIEncoding=UTF-8 |
| POST 乱码 | request.setCharacterEncoding |
| 日志乱码 | JAVA_OPTS + file.encoding |
| JSP 乱码 | page-encoding UTF-8 |
如果你愿意,可以告诉我:
我可以给你更精确的配置。