读书人

jsp传参惠存数据库内参数值乱码

发布时间: 2013-02-19 11:11:40 作者: rapoo

jsp传参存入数据库内参数值乱码
最开始碰到jsp之间传参乱码,后来解决了。但是看传到数据库内的值,居然也是乱码,并且各种网上方法都用了,还是不行,求解决。
这注册页面
---------------------------------------

<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<form action="Register.jsp" method="post">
<table align="center">
<tr><td colspan="2">用户注册</td></tr>
<tr><td>帐 号:</td><td><input type="text" name="username"/></td></tr>
<tr><td>密 码:</td><td><input type="text" name="userpassword"/></td></tr>
<tr><td colspan="2"><input type="submit"value="注册">
<input type="reset"value="重置"></td></tr></table>
</form>
</body>
</html>

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


<html>
<head>


<title>注册</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<%request.setCharacterEncoding("gb2312");
String reqUsername=(String)request.getParameter("username");
System.out.println(reqUsername);
String reqPassword=(String)request.getParameter("userpassword");
System.out.println(reqPassword); %>
<%
String url="jdbc:mysql://localhost:3306/javaweb";
String user="root";
String password="123456";
Connection conn=null;
PreparedStatement pstmt=null;
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(url,user,password);
}
catch(ClassNotFoundException e){
out.println("找不到驱动类");
}
catch(SQLException e){
out.println("无法连接MYSQL");}
try{

String addUser="INSERT INTO user (userid,username,password)VALUES(null,?,?)";
pstmt=conn.prepareStatement(addUser);


pstmt.setString(1,reqUsername);
out.println("注册帐号: "+reqUsername+"<br>");
pstmt.setString(2,reqPassword);
out.println("注册密码: "+reqPassword);
pstmt.executeUpdate();}
catch(SQLException e){
out.println("增加用户失败 ");}
try{
if(pstmt!=null){
pstmt.close();
pstmt=null;}
if(conn!=null){
conn.close();
conn=null;}}catch(Exception e){
out.println("数据库异常");} %>
</body>
</html>


---------------------------------------
只要帐号写汉字,就会乱码,其中几个存入数据库的乱码例子:
用户ID: 43 用户名: ? 用户密码: 333
用户ID: 44 用户名: ? 用户密码: 333
用户ID: 45 用户名: ? 用户密码: 333
用户ID: 46 用户名: ?? 用户密码: 1111
用户ID: 47 用户名: ?? 用户密码: 333
---------------------------------------
菜鸟怎么破?jsp传参惠存数据库内参数值乱码jsp传参惠存数据库内参数值乱码jsp传参惠存数据库内参数值乱码 数据库 jsp 乱码
[解决办法]
解决提交的中文问题:

1.request.setCharacterEncoding("gbk");

2.利用格式化字符串的方法:
String name = request.getParameter("name");
String nameStr = new String(name.getBytes("iso-8859-1"),"gbk");

再试试!!!
[解决办法]
你先修改一下数据库使用的编码方式试试;如果不行,在连接数据库的URL加上编码参数useUnicode=true&characterEncoding=utf8试试

读书人网 >Java Web开发

热点推荐