我用的是sql server2000,tomcat5
servlet里用了这么两句话
req.setCharacterEncoding("gb2312");
res.setCharacterEncoding("gb2312");网页里面编码也是gb2312的
现在我可以正确的把中文数据存到数据库里面
用企业管理器直接看也是中文的
但是把数据从sql server里面读出来的时候就是乱码了请教高手怎么解决?

解决方案 »

  1.   

    结贴版
      自己写一个函数
       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!!