温馨提示×

debian tomcat怎么改编码

小樊
41
2026-09-18 14:00:43
栏目: 智能运维

在 Debian 上修改 Tomcat 的编码(字符集),常见场景有两类:Tomcat 自身日志/控制台编码 和 HTTP 请求/响应编码(最重要)。下面按常用方式说明。


一、修改 Tomcat 启动编码(UTF-8)

1. 修改 setenv.sh(推荐)

Debian 下 Tomcat 一般位于:

/etc/tomcat9/
/var/lib/tomcat9/

创建或编辑:

sudo nano /usr/share/tomcat9/bin/setenv.sh

(不同版本可能是 tomcat8 / tomcat10)

添加:

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

保存后重启:

sudo systemctl restart tomcat9

二、修改 HTTP 请求/响应编码(关键)

2. 修改 server.xml(Connector 编码)

编辑:

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 一致

重启:

sudo systemctl restart tomcat9

三、修改 Web 应用编码(应用层)

3. web.xml 设置字符过滤(推荐)

在应用的 WEB-INF/web.xml 中:

<filter>
    <filter-name>encodingFilter</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>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

四、系统 & 数据库编码(补充)

4. 系统 locale

locale

若不是 UTF-8:

sudo dpkg-reconfigure locales

5. 数据库(MySQL 示例)

SHOW VARIABLES LIKE 'character_set%';

确保为 utf8mb4


五、验证

  • 页面中文正常
  • request.getCharacterEncoding() 为 UTF-8
  • 日志无乱码

如果你用的是 Tomcat 8 / 10 或 Spring Boot 内嵌 Tomcat,可以告诉我,我给你对应版本写法。

0 踩