在 Ubuntu + JSP(通常是 Tomcat) 环境下出现乱码,一般是 编码不一致 导致的。下面按「最常见 → 最稳妥」的方式帮你排查和解决。
每个 JSP 文件开头都要有:
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
如果已经写了但还是乱码,继续看下面。
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
⚠️ 必须在第一次调用 getParameter 之前
Ubuntu 下 Tomcat 默认 ISO-8859-1。
编辑:
sudo vi /opt/tomcat/conf/server.xml
找到 Connector,加上:
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
重启 Tomcat:
sudo systemctl restart tomcat
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
locale
推荐:
LANG=en_US.UTF-8
如果不是 UTF-8:
sudo apt install locales
sudo dpkg-reconfigure locales
连接 URL:
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8
MySQL 配置:
[mysqld]
character-set-server=utf8mb4
确保你的 JSP 文件本身是 UTF-8 无 BOM:
:set fileencoding=utf-8pageEncoding="UTF-8"URIEncoding="UTF-8"request.setCharacterEncoding("UTF-8")UTF-8utf8mb4如果你愿意,可以告诉我:
我可以给你更精确的改法。