首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2013-02-19 
jsp传参存入数据库内参数值乱码最开始碰到jsp之间传参乱码,后来解决了。但是看传到数据库内的值,居然也是乱

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试试

热点排行