在 Ubuntu 上开发 JSP(Java Server Pages) 时,设置编码主要是为了防止中文乱码。通常需要从 JSP 页面、Servlet、Tomcat、数据库、浏览器 多方面统一编码(推荐统一使用 UTF-8)。
下面按常见场景说明:
确保你的 JSP 文件是以 UTF-8 保存的(IDE 中设置):
在 每个 JSP 页面顶部 加上:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
说明:
pageEncoding:JSP 文件编译时使用的编码contentType:响应给浏览器的编码编辑:
sudo nano /opt/tomcat/bin/catalina.sh
在文件顶部(CYGWIN 上面)加入:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
或使用 setenv.sh(推荐):
sudo nano /opt/tomcat/bin/setenv.sh
内容:
export JAVA_OPTS="-Dfile.encoding=UTF-8"
sudo nano /opt/tomcat/conf/server.xml
找到 Connector,加上:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"/>
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
✅ 建议写在 Filter 中统一处理。
public class EncodingFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
chain.doFilter(req, resp);
}
}
web.xml:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>com.example.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
CREATE DATABASE test
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;
JDBC 连接:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
浏览器访问 JSP 时,确保:
<meta charset="UTF-8">✅ JSP:
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
✅ Tomcat:
URIEncoding="UTF-8"-Dfile.encoding=UTF-8✅ Servlet / Filter:
request.setCharacterEncoding("UTF-8")如果你使用的是 具体 Ubuntu 版本 / Tomcat 版本 / 是否用 Spring,我可以给你更精确配置。