对返回的数据进行编码转换就可以 数据库是unicode的也没关系 取出来以后转换成gbk的就可以了

解决方案 »

  1.   

    保存到数据库里并不要求一定要用什么编码,但关键取数据的时候转换成GBK就可以了,
      

  2.   

    这段代码我看过不过是 C++版本的!java中好像不用那么费事!
    我的代码是这样的!
    public String Gbk2Uni(String str) 
    {
      int len = str.length();
      int low=0;
      int high=0;
      String str1="";
      try {
      Class.forName("oracle.jdbc.driver.OracleDriver");
      Connection   conn=   DriverManager.getConnection("jdbc:oracle:thin:@192.101.1.26:1521:DB3800","zacz","wo_3505");   
      for(int j=0;j<len;j++)
      {
      char a=str.charAt(j);
      byte[] aGBK=(a+"").getBytes("UTF-16be");
      System.out.print("UTF-16编码为");
      printbyte(aGBK);
      String yingHex=Integer.toHexString(a);
      System.out.print("源字符\""+a+"\"");
      System.out.print("  Unicode编码"+yingHex);
      low = (a) & 0xff;//取c_name的低位
      System.out.print("  低位编码"+low);
      high = (a >> 8) & 0xff;//取c_name的高位
      System.out.print("  高位编码"+high);
      System.out.println("  完全编码"+Integer.toHexString(high) + " " + Integer.toHexString(low));
      if(high>=0x81){
      if(low>=0x01&&low>=0x3f){
      Statement   stat=conn.createStatement();
      ResultSet  result= stat.executeQuery("SELECT HDDS_FUN_GBK2UNICODE('"+a+"') AS VAL FROM DUAL");
      if(result.next())
      {
      if(result.getInt(1)!=9612)
      {  
      int k=result.getInt(1);
      a=(char)k;
      System.out.print("冷僻字"+a);
      System.out.print("  Unicode编码"+yingHex);
      low = (a) & 0xff;//取c_name的低位
      System.out.print("  低位编码"+low);
      high = (a >> 8) & 0xff;//取c_name的高位
      System.out.print("  高位编码"+high);
      System.out.println("  完全编码"+Integer.toHexString(high) + " " + Integer.toHexString(low));
      }
      }
      result.close();
      stat.close();
      }
      }
      str1=str1+a;
      }
      }
      catch (Exception   e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
       }   
    return str1; }
    public static void printbyte(byte[] bt)
    {
    for (int i = 0; i < bt.length; i++)
    {
    int hex = (int)bt[i] & 0xff;
    System.out.print(Integer.toHexString(hex) + " ");
    }
    }