日期:2014-05-20  浏览次数:20693 次

String如何按照一个指定的charset解压出一个byte流
刚接触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流。

谢谢。

------解决方案--------------------
理清楚,查看API。
------解决方案--------------------
楼主呀,不知道你说了那么多,到底想干什么,但你描术那么多,并且在描述中得出了不少结论,你的那些前提与结论看来是否有点滑稽.比如说(char_arr.length和str_unicode.length()一样,说明char也是unicode字符)这样就可以说明char是unicode字符吗???

给你一篇关于编码的文章,你看看吧.也许看完了你就明白是怎么回事了.
http://blog.csdn.net/lky5387/archive/2008/10/09/3041993.aspx

------解决方案--------------------
Java code

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