日期:2014-05-18  浏览次数:20647 次

WEB开发,Struts+Hibernate+Oracle9i实现,请问为什么我在页面中输入中文用户名以后在数据库中就查询不到呢?详见内容
数据库中“name”列中已经有有中文的记录了,可是在浏览器页面的“用户名”中输入对应的名字,就是查询不到与之对应的数据库中的记录(也就是登陆失败),“用户名”是英文字母的话就没有任何问题,我估计这是“字符编码”的原因,可是不知道具体是怎么回事,我的JSP什么的都是GB2312编码呀,可是为什么总是出错呢?大家给看看好吗?Oracle9i中的编码是什么呢?用不用把查询到的记录的编码转换成GB2312之后在显示出来呢?我的一个JSP文件的内容,大家看看,帮帮忙分析一下好吗,我也知道快过年了,大家也忙,小弟谢谢了!!!

××××××       Login.jsp   ××××××

<%@taglib   uri= "http://struts.apache.org/tags-bean "   prefix= "bean "   %>
<%@taglib   uri= "http://struts.apache.org/tags-html "   prefix= "html "   %>
<%@page   contentType= "text/html;charset=GB2312 "   %>
<center>
<h2> 用户登录 </h2>
<html:form   method= "post "   action= "/project/login.do ">
用户名: <input   type= "text "   name= "userName "> <br>
密&nbsp;&nbsp;码: <input   type= "password "   name= "password "> <br>
<input   type= "submit "   value= "登陆 "   >
</html:form>
</center>

××××××       Productlist.jsp   ××××××

<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN ">
<!--   saved   from   url=(0036)http://localhost:8080/cart/index.jsp   -->
<HTML> <HEAD> <TITLE> index </TITLE>
<META   http-equiv=Content-Type   content= "text/html;   charset=gb2312 ">
<META   content= "MSHTML   6.00.2800.1505 "   name=GENERATOR> </HEAD>
<BODY   bgColor=#ffffff>
<H1   align=center> 本系统的所有商品列表如下:   <BR> <BR>
                                    ……
                                    ……
                                    ……
                                    ……

------解决方案--------------------
在hibernate设置文件中需要加入如下设置才可以正确处理中文
<property name= "hibernate.query.factory_class ">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property>