有下述代码,从文件中读取数据转换成char保存到字符串中。
        .........        
        byte abyte0[] = new byte[16];
        try
        {
            stream.readFully(abyte0);
        }
        catch(EOFException eofexception)
        {
            throw new JDBFException("Unexpected end of file reached.");
        }
        //这个时候前10个字节是(intel小尾方式):0xD0F2BAC5(中文字符“序号”的16进制值).
        StringBuffer stringbuffer = new StringBuffer(10);
        for(int i = 0; i < 10; i++)
        {
            if(abyte0[i] == 0)
                break;
            //到这个时候转换成了如:0xD0变为\ufffd0...等。。输出就是一些乱码?请问怎样把他变为可见的中文字符。
            stringbuffer.append((char)abyte0[i]);
        }
        ......

解决方案 »

  1.   

    对不起,忘打了下面的代码:
    stream = new DataInputStream(inputstream);
      

  2.   

    改成下面的就可以了:
    StringBuffer   stringbuffer   =   new   StringBuffer(10);
    stringbuffer.append(new String(abyte0));
      

  3.   

    由于java采用的是unicode编码,双字节表示一个字符,即宽串,而char是单字节表示,所以当char转换成String时,如果不做一些处理就会出现乱码。
      

  4.   

    new String(byte[] bs).toCharArray();OK
      

  5.   

    大家注意看下面的代码,重点是我想一个一个字节的提取并转换成char。。这有什么办法解决没有?谢谢!
                    StringBuffer   stringbuffer   =   new   StringBuffer(10); 
                    for(int   i   =   0;   i   <   10;   i++) 
                    { 
                            if(abyte0[i]   ==   0) 
                                    break; 
                            stringbuffer.append((char)abyte0[i]); 
                    } 
      

  6.   

    由于java采用的是unicode编码,双字节表示一个字符,即宽串,而char是单字节表示,所以当char转换成String时,如果不做一些处理就会出现乱码。java里~~有没有将单个字节转换成unicode编码的方法????谢谢!