温馨提示×

ubuntu jsp如何设置编码

小樊
39
2026-10-21 11:33:12
栏目: 编程语言

在 Ubuntu 上开发 JSP(Java Server Pages) 时,设置编码主要是为了防止中文乱码。通常需要从 JSP 页面、Servlet、Tomcat、数据库、浏览器 多方面统一编码(推荐统一使用 UTF-8)。

下面按常见场景说明:


一、JSP 页面编码设置(最重要)

1. JSP 文件本身编码(UTF-8)

确保你的 JSP 文件是以 UTF-8 保存的(IDE 中设置):

  • Eclipse:右键文件 → Properties → Text file encoding → UTF-8
  • IDEA:File → Settings → File Encodings → UTF-8

2. JSP 页面指令设置

在 每个 JSP 页面顶部 加上:

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

说明:

  • pageEncoding:JSP 文件编译时使用的编码
  • contentType:响应给浏览器的编码

二、Tomcat 全局编码设置(Ubuntu)

1. 修改 Tomcat 启动参数

编辑:

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"

2. 修改 Tomcat server.xml(URL 编码)

sudo nano /opt/tomcat/conf/server.xml

找到 Connector,加上:

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

三、Servlet 中设置编码

1. 接收请求参数(防止 POST 乱码)

request.setCharacterEncoding("UTF-8");

2. 响应输出(防止页面乱码)

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>

五、数据库编码(MySQL 示例)

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">
  • 浏览器编码为 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,我可以给你更精确配置。

0 踩