今天用jsp向MySQL数据库传数据,用request.Parameter()从表单获取的数据是正确的,但是从jsp到数据库中文出现乱码,中文全显示问号,就像下图最后一行所示
敲黑板 !!!
捣鼓了大半天最后找到一种方法,就是在连接数据库时在URL后边加上红色部分内容:Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF-8","root","");然后就ok了,不知道还有没有别的方法,有的话拿出来分享一下吧
<%@ page pageEncoding="GBK" import="java.sql.*" contentType="text/html; charset=GBK"%>
<%
request.setCharacterEncoding("GBK");
String bookname = request.getParameter("bookname");
String author = request.getParameter("author");
String press = request.getParameter("press");
String price = request.getParameter("price");
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF-8","root","");
String sql="insert into bookinfo values(null,?,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, bookname);
pstmt.setString(2, author);
pstmt.setString(3, press);
pstmt.setFloat(4, Float.parseFloat(price));
int result = pstmt.executeUpdate();
String msg = "添加失败,点击确定跳转到图书列表页!";
if(result == 1){
msg = "添加成功,点击确定跳转到图书列表页!";
}
pstmt.close();
con.close();
%>
<script>window.alert('<%=msg %>');</script>
<%
response.setHeader("Refresh", "1;url=index.jsp");
%>
参考:点击打开链接