温馨提示×

debian tomcat乱码怎么解决

小樊
50
2026-10-21 01:46:04
栏目: 智能运维

在 Debian 上运行 Tomcat 出现乱码(中文乱码、日志乱码、页面乱码等),通常是字符编码不一致导致的。下面按常见场景给你一套排查 + 解决方案。


一、确认系统字符集(最常见原因)

1. 查看当前字符集

locale

如果不是 UTF-8,例如:

LANG=C
LC_ALL=

2. 修改为 UTF-8

sudo dpkg-reconfigure locales

勾选:

en_US.UTF-8
zh_CN.UTF-8

然后设置:

sudo update-locale LANG=en_US.UTF-8

重启服务器或重新登录。


二、Tomcat 启动脚本设置编码(非常重要)

1. 修改 catalina.sh

编辑:

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

在文件开头加入:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

或在 JAVA_OPTS 中加:

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

三、Tomcat 配置文件编码

1. server.xml(解决 URL 乱码)

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

四、Web 应用层面乱码

1. JSP 页面

<%@ page contentType="text/html;charset=UTF-8" %>

2. Servlet

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

3. Spring Boot / Spring MVC

spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

五、Tomcat 日志乱码

1. logging.properties

vi /etc/tomcat9/logging.properties

确保:

java.util.logging.ConsoleHandler.encoding = UTF-8

六、文件本身乱码(数据库 / 文件读取)

  • 数据库连接加:
?useUnicode=true&characterEncoding=UTF-8
  • 文件读写指定编码:
new InputStreamReader(in, StandardCharsets.UTF_8);

七、快速自检清单 ✅

  • [ ] locale 是 UTF-8
  • [ ] Tomcat 启动参数有 -Dfile.encoding=UTF-8
  • [ ] URIEncoding="UTF-8"
  • [ ] JSP / Servlet 编码一致
  • [ ] 日志编码 UTF-8

如果你能告诉我:

  • Debian 版本
  • Tomcat 版本
  • 乱码出现位置(页面 / 日志 / 数据库 / 上传文件)

我可以给你更精确的解决方案。

0 踩