关于乱码

来源:互联网 发布:淘宝性价比高的女装店 编辑:程序博客网 时间:2024/06/04 18:45

登陆页面 格式有的是:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<p>帐号: <input type="username" name="username"></p>
<p>密码: <input type="password" name="password"></p>

用jdbcodbc桥接,连接数据库:

               String name=request.getParameter("username");
String pwd=request.getParameter("password");

//out.println(name);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:ES","sa","sa");
Statement stmt=con.createStatement();
//ResultSet rs=stmt.executeQuery("select * from rrt_login where username='" + name + "' and password='" + pwd + "'");

String sql="select * from rrt_login where username='" + name + "' and password='" + pwd + "'";
//out.println(sql);
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
out.println("登录成功!");
}
else{
out.println("登录失败!");
}

问题:登陆失败!

分析:数据库连接成功,但是数据传输失败。

逐步调试,先输出rs的内容,发现为这样:sun.jdbc.odbc.JdbcOdbcResultSet@c792d4

然后输出sql的内容,发现为:select * from rrt_login where username='唐宏康' and password='123'

所以判断“username”数据传输失败

再输出name,结果为:唐宏康


判定为数据传输出现乱码,寻找结果解决,测试后,方法是:

将String name=request.getParameter("username");改为String name=new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8");