温馨提示×

Tomcat如何设Debian字符集

小樊
35
2026-10-03 12:39:44
栏目: 智能运维

在 Debian 上运行 Tomcat 时,“字符集”通常涉及 3 个层面,你需要根据问题场景来配置。下面按常见需求说明。


一、Tomcat 自身使用 UTF-8(推荐)

1. 修改 catalina.sh(全局 JVM 编码)

编辑:

/etc/tomcat9/catalina.sh
# 或 /opt/tomcat/bin/catalina.sh

在文件开头或 JAVA_OPTS 处增加:

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

✅ 影响:JVM 默认字符集


2. 修改 server.xml(HTTP 请求/响应编码)

编辑:

/etc/tomcat9/server.xml

在 <Connector> 中加:

<Connector
    port="8080"
    protocol="HTTP/1.1"
    URIEncoding="UTF-8"
    useBodyEncodingForURI="true"
    connectionTimeout="20000"
    redirectPort="8443" />

✅ 解决:URL 参数乱码、POST 乱码


3. 修改 web.xml(默认 servlet 编码)

在 web.xml 中添加:

<filter>
    <filter-name>setCharacterEncoding</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>setCharacterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

二、Debian 系统字符集(影响 Tomcat 启动环境)

查看当前字符集

locale

设置 Debian 为 UTF-8

sudo dpkg-reconfigure locales

选择:

en_US.UTF-8

或

zh_CN.UTF-8

然后:

sudo update-locale LANG=en_US.UTF-8

重启系统或重新登录。


三、Spring / Java 应用层(如果是 Web 应用)

Spring Boot 示例

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true

四、验证是否生效

ps aux | grep tomcat

应看到:

-Dfile.encoding=UTF-8

或在 JSP 中:

<%= System.getProperty("file.encoding") %>

总结(最简配置)

✅ Debian:en_US.UTF-8
✅ Tomcat:URIEncoding="UTF-8"
✅ JVM:-Dfile.encoding=UTF-8

如果你能说明 具体乱码场景(页面 / 日志 / 数据库 / 上传文件),我可以给你更精确的配置。

0 踩