温馨提示×

如何改Debian Tomcat编码

小樊
44
2026-09-15 16:01:20
栏目: 智能运维

在 Debian 上修改 Tomcat 的编码(默认字符集),通常是为了解决中文乱码、表单提交乱码等问题。下面按最常见、最推荐的方式说明。


一、修改 Tomcat 全局编码(推荐)

1. 修改 catalina.sh

编辑 Tomcat 启动脚本:

sudo nano /etc/default/tomcat9
# 或
sudo nano /opt/tomcat/bin/catalina.sh

添加或修改:

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

✅ 影响:

  • JVM 默认编码
  • 日志、文件读取
  • 内部字符串处理

二、修改 Tomcat Connector 编码(关键)

2. 修改 server.xml

路径示例:

sudo nano /etc/tomcat9/server.xml

找到 <Connector>:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

修改为:

<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 应用编码(Spring / Servlet)

3. 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>

四、Debian 系统编码检查(重要)

locale

若不是 UTF-8:

sudo dpkg-reconfigure locales

选择:

en_US.UTF-8

或

zh_CN.UTF-8

五、重启 Tomcat

sudo systemctl restart tomcat9

六、验证是否生效

ps aux | grep tomcat

应看到:

-Dfile.encoding=UTF-8

总结(最简方案)

✅ 必改三项:

  1. JAVA_OPTS=-Dfile.encoding=UTF-8
  2. URIEncoding="UTF-8"
  3. Debian locale = UTF-8

如果你说明:

  • Tomcat 版本(8 / 9 / 10)
  • 是否是 Spring Boot
  • 乱码场景(页面 / 日志 / 数据库)

我可以给你精准配置。

0 踩