刚接触java,直接用了,没有系统地看书,有几个问题:String貌似是unicode的。我从GBK文件读取了n字节到 byte数组 buffer[]然后构造String(buffer, "GBK")得到 str_unicode现在我把str_unicode用getBytes()和toCharArray()得到byte数组和char数组分别是 byte_arr[] 和 char_arr[]现在我知道 str_unicode.length()是中文的字符数目,肯定小于 buffer.length ,没有异议。char_arr.length和str_unicode.length()一样,说明char也是unicode字符。然后byte_arr,和buffer.length不一样,比这个大。说明byte_arr其实是真正的字节数。问题:
str_unicode是unicode的存储,我知道他原来是从GBK转换过来的,现在我想知道,怎么样把str_unicode解压出GBK的byte流。谢谢。

解决方案 »

  1.   

    楼主呀,不知道你说了那么多,到底想干什么,但你描术那么多,并且在描述中得出了不少结论,你的那些前提与结论看来是否有点滑稽.比如说(char_arr.length和str_unicode.length()一样,说明char也是unicode字符)这样就可以说明char是unicode字符吗???给你一篇关于编码的文章,你看看吧.也许看完了你就明白是怎么回事了.
    http://blog.csdn.net/lky5387/archive/2008/10/09/3041993.aspx
      

  2.   


        byte[] bytes = str_unicode.getBytes( "GBK" );
      

  3.   

    accp206正解。其他同学给的知识我看看,感谢:)等下回来给分
      

  4.   

    lky5387,你说的貌似和java没有关系。编码我也知道。“比如说(char_arr.length和str_unicode.length()一样,说明char也是unicode字符)这样就可以说明char是unicode字符吗??”几乎可以说明了,String是unicode这个结论成立的话(成立了,看过jdk文档),getCharArray()得到的char不是byte的长度,而和str_unicode.length()刚好一样,并且几乎是byte_len的 1/3 。这个关系你看出来了吧。
      

  5.   

    java的char相当于VC上的wchar,内部是unicode的