使用这样看看
password=new String(rset.getString("password").getBytes("ISO8859_1"),"GBK");

解决方案 »

  1.   

    是的,是字符集的问题,加密后当然只会是这种看不懂的字符,我用PB打开STAFF表,看其中的密文是没有错的,但在JSP中把它取出来就变形了,按道理password的值应该是"?隹H?"(员工密码的密文)但成了"??H?",意思就是这样。
      

  2.   

    password字段不是字符吧,不能用rset.getString
      

  3.   

    你的oracle是不是中文编码的?
    如果是就应该可以直接从oracle sql_plus中直接看password的内容,如果也是乱码,那么可能写进去的时候就已经是乱码了。
      

  4.   

    我的password字段类型是varchar2型,这个不是什么乱码,是密文,象乱也是正常的。
      

  5.   

    如果你不能确定是什么字符好像在java中没什么好办法了,不过你可以试试用这样进行比较密码是否正确吧。
    就是都统一成ISO8859_1这种编码
      

  6.   

    是的password字段中的内容就是员工密码的密文,我现在得把它取出来解密再与员工输入的密码核对,但在从数据库中取出的时候,密文变了形,就是这个问题。按道理password的值应该是"?隹H?"(员工密码的密文)但成了"??H?",意思就是这样。
      

  7.   

    是Oracle的客户端与服务器端的字符集不同的原因。
    其中有一个为8859-1,你可一分别在注册表中看一下。
      

  8.   

    我的数据库的字符集为:ZHS16CGB231280
      

  9.   

    你可以把输入的密码加密后变成ISO8859_1这种编码,然后,跟取出来的密码进行比较看看。
    就是这样吧:
    你的加密过程(inputpwd).getBytes("ISO8859_1").equals(rset.getString("password").getBytes("ISO8859_1"))
      

  10.   

    不行,加密是在WINDOWS下的DLL进行的,存储也由PB做的客户端干的。
      

  11.   

    我的数据库的字符集为:ZHS16CGB231280
      

  12.   

    如果是这样就用这样看看:
    password=new String(rset.getString("password").getBytes("ISO8859_1"),"gb2312");
      

  13.   

    我的数据库的字符集为:ZHS16CGB231280
      

  14.   

    呵呵,问一下你PASSWORD你用的什么数据类型呢?有的类型是不够规定字段长度会补点东西,有的呢则自适应……嘿嘿……中文乱码问题?哈哈,我建议你不要看取到的是什么,有的时候显示就是显示成那个样子,你取了解密以后看看解密得对不对,如果对了就根本不用看显示的内容,有的时候JAVA碰到不识别的编码都会显示成“????”,这个很正常,你不要在那里对密文,还是解密以后看结果吧。