温馨提示×

debianjsp乱码怎么解决

小樊
36
2026-10-16 10:06:36
栏目: 编程语言

在 Debian 上部署 JSP(通常是 Tomcat) 出现乱码,一般是编码不一致导致的。下面按常见原因一步步解决。


一、确认系统 & 终端编码

locale

如果不是 UTF-8,建议设置为:

sudo apt install locales
sudo dpkg-reconfigure locales
# 选择 zh_CN.UTF-8 或 en_US.UTF-8

二、Tomcat 全局编码设置(最重要)

1️⃣ 修改 server.xml

编辑:

/etc/tomcat9/server.xml
# 或
/opt/tomcat/conf/server.xml

在 Connector 中加:

URIEncoding="UTF-8"

示例:

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

2️⃣ 修改 catalina.sh(JVM 编码)

/etc/default/tomcat9

或在 catalina.sh 中加:

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

三、JSP 页面本身编码

JSP 顶部必须写:

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

HTML 中:

<meta charset="UTF-8">

四、表单提交乱码(POST)

在 web.xml 中加过滤器(推荐):

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

或 Servlet 中:

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

五、数据库乱码(MySQL 常见)

MySQL 连接串:

jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8

数据库/表:

CREATE DATABASE db CHARACTER SET utf8mb4;

六、文件本身编码

确保 JSP / Java 文件是 UTF-8:

file your.jsp

不是的话用编辑器转成 UTF-8(无 BOM)。


七、快速自检清单 ✅

  • [ ] Debian locale = UTF-8
  • [ ] Tomcat URIEncoding=UTF-8
  • [ ] JVM -Dfile.encoding=UTF-8
  • [ ] JSP charset=UTF-8
  • [ ] 数据库 UTF-8
  • [ ] 文件本身是 UTF-8

如果你能贴出:

  • Tomcat 版本
  • 乱码出现位置(页面 / 表单 / 数据库)
  • 示例 JSP 或代码

我可以直接帮你精确改。

0 踩