在 Ubuntu 上开发 JSP(Java Server Pages) 时,设置编码主要涉及 页面编码、服务器编码、数据库编码 三个方面。下面按常见场景给你说明。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
说明:
pageEncoding:JSP 文件本身的编码(写文件时的编码)contentType:浏览器解析时使用的编码✅ 必须两个都写 UTF-8
<meta charset="UTF-8">
server.xml路径一般是:
/etc/tomcat9/server.xml
# 或
/opt/tomcat/conf/server.xml
找到 Connector:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
✅ 关键参数:URIEncoding=“UTF-8”
编辑:
/etc/default/tomcat9
添加:
JAVA_OPTS="-Dfile.encoding=UTF-8"
重启 Tomcat:
sudo systemctl restart tomcat9
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
✅ 建议使用 过滤器(Filter) 统一设置
sudo nano /etc/mysql/my.cnf
添加:
[client]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
数据库、表也要 UTF-8:
CREATE DATABASE test CHARACTER SET utf8mb4;
JDBC 连接:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
locale
如果不是 UTF-8:
sudo apt install locales
sudo dpkg-reconfigure locales
选择 en_US.UTF-8 或 zh_CN.UTF-8
| 原因 | 解决 |
|---|---|
| JSP 没写 charset | 加 page 指令 |
| Tomcat 没设 URIEncoding | server.xml |
| 数据库不是 UTF-8 | 改 MySQL |
| 系统 locale 不是 UTF-8 | dpkg-reconfigure |
如果你用的是 具体版本(Tomcat 8/9/10、Ubuntu 20/22) 或 某种框架(Spring、Servlet),我可以给你更精确的配置示例。