JDBC向SQL数据库表insert中文出现乱码的问题(request.setCharacterEncoding()的使用)

1. 代码情况

数据库排序规则使用chinese_prc_90_cs_ai。

jsp页面page代码:

<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page import="java.sql.*" %>

2. 问题

数据库表出现乱码:
在这里插入图片描述

3.原因
从request中取出值或从数据库中取出值。
没有使用request.setCharacterEncoding()提前指定发往服务器的参数的编码格式,则会按照服务器端默认的“iso-8859-1”来进行编码。
request.setCharacterEncoding()作用

4.解决方法
在jsp添加<%request.setCharacterEncoding("gb2312"); %>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请修改下面的两段代码使之能运行, 代码 1<body> <%request.setCharacterEncoding("utf-8");//解决提交乱码问题 %> <% String stuno = request.getParameter("stuno"); String stuname = request.getParameter("stuname"); if (stuno != null) { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql: //127.0.0.1:3306/sys", "root", "1234"); PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT num FROM tb_student WHERE NUM=?"; ps = conn.prepareStatement(sql); ps.setString(1, stuno); rs = ps.executeQuery(); if (rs.next()) { out.println("对不起,该学生学号已经存在!"); } else { sql = "INSERT INTO tb_student(NUM,NAME) VALUES(?,?)"; ps = conn.prepareStatement(sql); ps.setString(1, stuno); ps.executeUpdate(); out.println("添加成功!"); } } %> 添加学生信息 <br> <form method="post"> 输入学号:<input type="text" name="stuno"><BR> 输入姓名:<input type="text" name="stuname"><BR> <input type="submit" value="添加"> </form> </body> </html>,代码2 // 添加学生信息到数据中 public int addStudent(Student student) throws Exception { initConnection(); // 创建一个sql语句 String sql = "insert into tb_student(num,name) values (?,?)"; // 创建一个PreparedStatement对象 PreparedStatement ps = conn.prepareStatement(sql); // 填充参数 ps.setString(1, student.getNum()); ps.setString(2, student.getName()); // 执行sql语句 int retv = ps.executeUpdate(); ps.close(); // 关闭链接 closeConnection(); return retv; }
最新发布
06-12
addStudent.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Add Student</title> </head> <body> <h1>Add Student</h1> <form action="insertStudent.jsp" method="post"> <label for="sno">学号:</label> <input type="text" id="sno" name="sno" /><br> <label for="sname">姓名:</label> <input type="text" id="sname" name="sname" /><br> <label for="sage">年龄:</label> <input type="text" id="sage" name="sage" /><br> <label for="sex">性别:</label> <input type="text" id="sex" name="sex" /><br> <input type="submit" value="提交" /> </form> </body> </html> ``` insertStudent.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert Student</title> </head> <body> <% String url="jdbc:sqlserver://localhost;databaseName=StudentInfo"; request.setCharacterEncoding("utf-8"); String sno = request.getParameter("sno"); String sname = request.getParameter("sname"); int sage = Integer.valueOf(request.getParameter("sage")); String sex = request.getParameter("sex"); try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection(url,"sa","123"); String sql = "insert into student values(?,?,?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, sno); pstmt.setString(2, sname); pstmt.setInt(3, sage); pstmt.setString(4, sex); int num = pstmt.executeUpdate(); if(num > 0){ out.print("插入成功!"); } pstmt.close(); conn.close(); } catch(SQLException ex){ System.out.println ("\n*** 发生SQL异常 ***\n"+ex.getMessage()); } catch(ClassNotFoundException ex){ System.out.println(ex); } %> </body> </html> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值