t1441332354 2018-05-28 01:27 采纳率: 71.8%
浏览 2429
已结题

关于从jsp页面提交数据到数据库出现乱码的问题

这是jsp页面

 String ShipName = new String(request.getParameter("ShipName").getBytes("ISO8859_1"),"UTF-8");
        String project = new String(request.getParameter("project").getBytes("ISO8859_1"),"UTF-8");
        int number = Integer.parseInt(request.getParameter("test"));
        String name = (String)session.getAttribute("username");
        try{

            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://192.168.3.228:3305/YuDetect";
            String username = "bigdaddy";
            String password = "senya@2018";
            Connection conn = DriverManager.getConnection(url,username,password);
            String isExit = "select * from TestResult where ShipName = '"+ShipName+"' and DetectItem = '"+project+"'";
            PreparedStatement pstmt = conn.prepareStatement(isExit);
            ResultSet rs = pstmt.executeQuery();
            if(rs.next()){
                out.print("该数据已存在,请不要重复添加!");
            }else{              
                String sql = "insert into TestResult(ShipName,DetectItem,Val_detect,Detector) values(?,?,?,?)";
                PreparedStatement ps = conn.prepareStatement(sql);
                ps.setString(1,ShipName);
                ps.setString(2,project);
                ps.setInt(3,number);
                ps.setString(4,name);
                int row = ps.executeUpdate();
                if(row > 0){
                    out.print("成功添加数据!");
                }
                ps.close();
                conn.close();
                }
        }catch(Exception e){
            out.print("数据添加失败!");
            e.printStackTrace();
        }

这是mysql数据库的字符集
图片说明
现在可以确定的是,传到jsp页面的数据里没有乱码,“ShipName”可以正常显示中文,我觉得关键的问题在于往数据库里添加的时候出了编码问题,但是我数据库的编码格式也是utf-8(UTF-8和UTF8mb4都试过)结果都是
图片说明
想问问还有没有什么解决方法

  • 写回答

16条回答 默认 最新

  • Mr.ADiao 2018-05-28 02:37
    关注

    造成中文乱码的原因有:
    1.如果你用的是SSM,那么你看web.xml里边是否配置了中文乱码处理


    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter

    encoding
    UTF-8



    CharacterEncodingFilter
    /*

    2.还有可能表单提交时 ,以post方式提交 tomat也需要配置中文乱码
    connectionTimeout="20000"
    redirectPort="8443" URIEncoding="UTF-8" />
    3. 还有就是 数据库的问题 在安装mysql数据库时可以选择字符集 为UTF-8 如果没有选择 也可能出现中文乱码问题

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站