TomCat 中的 JSP 文件编码

Posted

技术标签:

【中文标题】TomCat 中的 JSP 文件编码【英文标题】:JSP file encoding in TomCat 【发布时间】:2016-11-17 18:34:20 【问题描述】:

我使用过 TomCat 8.00 和 IntelliJ IDEA 14.0 和 h2 数据库。当我从数据库中注册表单(西里尔文)的文本字段中获取文本时,记录如下:

重要的是我做了这些配置。

这是我的 index.jsp 文件

    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
    <title>Home</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

这是我的 servlet

public class RegisterServlet extends HttpServlet 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 

        String username = request.getParameter("usernameReg");
        String pass = request.getParameter("passReg");
        String name = request.getParameter("firstNameReg");
        String lastName = request.getParameter("lastNameReg");
        String email = request.getParameter("emailReg");

        request.setAttribute("Username", username);

        StudentBean regstudent;
        try 
            regstudent = new RegisterDAO().registerStudent(username, pass, name, lastName, email);
            request.getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
         catch (SQLException e) 
            e.printStackTrace();
        
    

还有我的 RegisterDAO 类:

public class RegisterDAO 

    Connection conn = null;
    PreparedStatement state = null;
    //ResultSet res = null;

    public StudentBean registerStudent(String userName, String pass, String name, String lastName, String email) throws SQLException

        StudentBean result = null;
        String sql = "INSERT INTO STUDENT VALUES(null, ?, ?, ?, ?, ?)";

        try 
            conn = DbConnection.getInstance().getConnect();
            state = conn.prepareStatement(sql);
            state.setString(1, userName);
            state.setString(2, pass);
            state.setString(3, name);
            state.setString(4, lastName);
            state.setString(5, email);
            state.execute();
         catch (SQLException e) 
            System.out.println("Нулл поинт");
            e.printStackTrace();
        finally 
            if(state != null)
                state.close();
            
        
       DbConnection.getInstance().Disconnect();

        return result;
    

在英语中一切正常。我认为jsp文件没有正确保存在UTF-8中,它仍然使用默认的IntelliJ编码。

如果有任何解决问题的想法,我将不胜感激。

最好的问候, D. Balamjiev

【问题讨论】:

在intellij中打开你的jsp文件,查看右下角的内容,应该是你文件的编码 它是 UTF-8,但不工作。 检查你的数据库。 据我所知H2已经支持Unicode,所以你不需要改变字符集。你能说得更具体一点吗? 【参考方案1】:

您可以尝试将其添加到您的 servlet 中。

response.setCharacterEncoding("UTF-8")

【讨论】:

以上是关于TomCat 中的 JSP 文件编码的主要内容,如果未能解决你的问题,请参考以下文章

设置tomcat的字符编码

为啥在eclipse中修改JSP后tomcat自动重启?

错题集04

统一字符集编码

java jsp 中 表单用 get 提交 怎样解决中文乱码问题?

jsp文件编码