我用的是sql server2000,tomcat5
servlet里用了这么两句话
req.setCharacterEncoding("gb2312");
res.setCharacterEncoding("gb2312");网页里面编码也是gb2312的
现在我可以正确的把中文数据存到数据库里面
用企业管理器直接看也是中文的
但是把数据从sql server里面读出来的时候就是乱码了请教高手怎么解决?
servlet里用了这么两句话
req.setCharacterEncoding("gb2312");
res.setCharacterEncoding("gb2312");网页里面编码也是gb2312的
现在我可以正确的把中文数据存到数据库里面
用企业管理器直接看也是中文的
但是把数据从sql server里面读出来的时候就是乱码了请教高手怎么解决?
自己写一个函数
public String Transition(String code)
{
String result=null;
byte temp[];
try
{
temp=code.getBytes("iso-8859-1");
result=new String(temp);
}
catch(Exception e)
{
System.out.println(e.toString());
result=code;
}
return result;
}
数据插入到数据的时候通过这个函数过滤
public String BeforeFindPassword(String FindUserE_mail,String FindUserName)
{
String strReturn="";
String strQuery="select * from UserDetails where UserName='"+this.Transition(FindUserName)+"' and EmailID='"+this.Transition(FindUserE_mail)+"'";
try
{
//连接数据库
connect=DriverManager.getConnection("jdbc:odbc:OlineBook","sa","sa");
Statement stateLogin=connect.createStatement();
result=stateLogin.executeQuery(strQuery);
if(result.next())
{
//如果输入的EmailID和用户名有效,将返回他对应的问题
strReturn=this.Transition(result.getString("Question").trim()); }
else
{
//否则返回字符串"NoThings"表明输入的用户名和EmailID不正确
strReturn="NoThings";
}
result.close();
stateLogin.close();
connect.close();
}
catch(Exception y)
{
System.out.println("登陆系统时出错!!!");
System.out.println(y.getMessage());
strReturn="NoThings";
}
return strReturn;
}//end BeforeFindPassword()这样返回的值就跟你插入到数据库中的值一样拉OK!!