日期:2014-05-19  浏览次数:21613 次

中文验证不过关啊!?
<%@page contentType="text/html" pageEncoding="GBK"%>
<%@page import="java.sql.*"%>
<%!
public static final String DRIVER="com.mysql.jdbc.Driver";
public static final String URL="jdbc:mysql://localhost:3306/sms?useUnicode=true&characterEncoding=GBK";
public static final String USER="root";
public static final String PWD="bush";
%>
<%
Connection conn=null;
PreparedStatement pst=null;
ResultSet rs=null;
boolean flag=false;
String name=request.getParameter("username");
String pwd=request.getParameter("userpass");
String sql="select uid from user where uname=? and upwd=?";
try{
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,USER,PWD);
pst=conn.prepareStatement(sql);
pst.setString(1,name);
pst.setString(2,pwd);
rs=pst.executeQuery();
while(rs.next()){
int i=rs.getInt("uid");
out.println("<h1>"+i+"</h1>");
}
if(rs.next()){
flag=true;
session.setAttribute("uname",name);
}
}catch(Exception e){

}finally{
try{
rs.close();
pst.close();
conn.close();
}catch(Exception e){
}
}
if(flag){
%>
<jsp:forward page="main.jsp"/>
<%
}else{
%>
<jsp:forward page="fail.html"/>
<%
}
%>

我也刚开始练习jsp,写了个登陆操作,用户名如果是英文的话可以,但是换成中文就总是验证失败啊!
mysql数据库的编码是GBK,所有的页面编码也都是GBK。
那位大神给支个招?小弟菜鸟一名,求教了!
------最佳解决方案--------------------
我是凭记忆是这个方法的,你看下有没有类似的方法,设置下就好了
不过好像就是这个方法名字啊....
------其他解决方案--------------------
把你数据库取出来的值打印到页面上看是否是乱码
------其他解决方案--------------------
引用:
把你数据库取出来的值打印到页面上看是否是乱码

我打印了,没个用户有个id,英文名称的话有结果,就是用户id,如果是中文名字的话就没结果,连id都打印不出来。。。
------其他解决方案--------------------
1.String name=request.getParameter("username");
打印name
2.String sql="select uname,upwd from user";
打印uname,和upwd
------其他解决方案--------------------
加入多个System.out.println语句,验证是否有乱码。
------其他解决方案--------------------
引用:
1.String name=request.getParameter("username");
打印name
2.String sql="select uname,upwd from user";
打印uname,和upwd

啊!那个那么打印出来时乱码,可是我的表单页的编码和jsp页,以及浏览器的都一样啊!这个是什么问题呢?

------其他解决方案--------------------
试试这个jdbc:mysql://localhost/DBVF?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
------其他解决方案--------------------
name打印出来是乱码!
------其他解决方案--------------------
引用:
试试这个jdbc:mysql://localhost/DBVF?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8


我的这个jdbc:mysql://localhost:3306/sms?useUnicode=true&characterEncoding=GBK
------其他解决方案--------------------
引用:
试试这个jdbc:mysql://localhost/DBVF?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8