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

字符编码的两个问题
第一:用String.getBytes( "unicode ")进行编码时,产生的字节数组开头为什么总会多出-1,-2这两个数,导致解码长生的数组总比字符数*2多2个。

第二:我有个ROSE文档,原本是BIG5的。因为ROSE文档本质上是个文本文件,所以就自己转码,把它专成了GBK编码,但仍然不能打开。后打开文档发现其中有大量的charset   136的字样。估计136指的就是big5,那GBK的值是多少呢?

------解决方案--------------------
,-1,-2,是字节顺的一种表示,这是由sun的类库实现,指示如果没有指定字节就使用默认的UnicodeLittle(在Window平台,别的平台不清楚),但为了标识这种字节顺,就使用了-1,-2在前面表示。String.getBytes( "Unicode ");应该小心使用,应该注意它返回的-1,-2,这两个字节,因为在一些网络程序中,特别是当对方是由java以外的语言编写,有可能不会使用这种方式来标识字节顺,因此要了解对方的细节,这样才能保证数据的准确传递。

要知道很详细就要研究sun的类库了。