进行一下编码转换,
String strTmp  = new String (str.getBytes("ISO-8859-1"),"gb2312");
str 是从数据库中取出来的8859 -1 编码
转换为GB2312就行了

解决方案 »

  1.   

    楼上说的很明白,我这里要补充几句:
    如果数据库内数据是乱吗,你就得看看在插入时是否进行转化(转为iso8859_1)
    如果库内是正确的,就要在现实的时候,照楼上的转。
    good luck
      

  2.   

    至于下面的错误:
    程序显示"SQLException"异常:invalid descriptor index 你不妨将整条sql语句打印出来,然后再sql分析察看器中运行,具体看看错误在那里?good luck!
      

  3.   

    谢谢楼上两位大侠的指点!第一个问题已经明白了,但第二个问题还是不行,程序里的"select"语句在sql分析器里运行能显示结果,不知道错在哪里?
      

  4.   

    import java.sql.*;
    import java.awt.*;
    import java.awt.event.*;class Acc_Win extends Thread 
    {
     Frame f=new Frame("帐户查询");
     TextArea text=new TextArea();
     
     String str_sql,acc,name,addr;int limitfee,balance;
     
     Connection con;Statement sql;ResultSet rs;
     
     Acc_Win()
     {
      f.setBounds(150,150,300,120);
      f.setVisible(true);
      f.add(text,"Center");f.pack();
      f.addWindowListener(new WindowAdapter()
      {public void windowClosing(WindowEvent e)
       {f.setVisible(false);System.exit(0);}
      });
      
      
      try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
      catch(ClassNotFoundException e){}
      try{System.out.println("建立数据库连接");
          
          con=DriverManager.getConnection("jdbc:odbc:account","","");
          
          
          sql=con.createStatement();
         }
      catch(SQLException e1){}
     }
     
     public void run()
     {
      while(true)
      {text.setText(null);
       try{System.out.println("查询数据库");
           
           str_sql="select account,limitfee,companyname,address,balance from guestuser";
           
           rs=sql.executeQuery(str_sql);
           while(rs.next())
           {
            
            name=rs.getString("companyname");
            acc=rs.getString("account");
            addr=rs.getString("address");
            limitfee=rs.getInt("limitfee");
            balance=rs.getInt("balance");
            
            text.append("帐户:"+acc+" ");
            text.append("用户名:"+name+" ");
            text.append("地址:"+addr+" ");
            text.append("限费额度:"+limitfee+" ");
            text.append("余额:"+balance+" ");
            text.append("\n");
           }
          }
       catch(SQLException e1){System.out.println("Error:"+e1);}
       f.pack();
       
       try{sleep(2000);}
       catch(InterruptedException exp){}
      }
     }
    }
    public class ex23_4
    {
     public static void main(String args[])
     {Acc_Win account_win=new Acc_Win();
      account_win.start();
     }
    }              
     程序显示"SQLException"异常:invalid descriptor index  木鱼兄,代码贴出来了,我在线等待!