通过前端模态框,进行插入中文的操作,发现传入数据库的值是乱码

jsp传值到servlet中文编码乱码问题排查

 

jsp传值到servlet中文编码乱码问题排查

 

jsp传值到servlet中文编码乱码问题排查

 

servlet源代码如下:

通过获取request域中的各个parameter,获得对应的值。

jsp传值到servlet中文编码乱码问题排查

经过排查后发现,问题出现在JSP传入值到servlet这段区间。

可能的问题出现在:

1.servlet接收值

2.JSP编码

3.tomcat编码

 

于是一个个进行排查

1.对servlet代码进行修改:

在doGet方法前几行加上:

        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");

 

发现并不奏效

jsp传值到servlet中文编码乱码问题排查

 

2.对JSP的代码进行检查,将所有编码属性设置为UTF-8,并且进入eclipse,将对应的编码都改为UTF-8

jsp传值到servlet中文编码乱码问题排查

 

仍然不奏效,还是乱码

 

3.剩下的可能只有tomcat编码

于是通过在servlet  doGet方法中,进行编码转换:

jsp传值到servlet中文编码乱码问题排查

 

代码为:

            String name = new String(request.getParameter("qname").getBytes("ISO-8859-1"),"UTF-8");
            System.out.println(name);
            int question_type_id = Integer.parseInt(request.getParameter("qtype"));
            System.out.println(question_type_id);
            String content = new String(request.getParameter("qcontent").getBytes("ISO-8859-1"),"UTF-8");
            System.out.println(content);
            String answer = new String(request.getParameter("qanswer").getBytes("ISO-8859-1"),"UTF-8");
            System.out.println(answer);

 

tomcat默认编码是ISO-8859-1,我们要通过String的有参构造函数,将其转换为UTF-8编码。

发现有效:

jsp传值到servlet中文编码乱码问题排查

 

PS:想尝试通过修改tomcat安装目录的conf目录下的server.xml的属性:

jsp传值到servlet中文编码乱码问题排查

经尝试后发现无效。

所以暂定方案为servlet转换接收字符串编码。

相关文章:

  • 2021-09-28
  • 2022-01-10
  • 2022-01-09
  • 2021-10-21
  • 2021-07-11
  • 2021-12-22
  • 2021-12-04
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2022-01-18
  • 2021-06-17
  • 2022-02-08
  • 2022-12-23
相关资源
相似解决方案