读书人

JAVA中的编码解决思路

发布时间: 2012-03-17 19:06:27 作者: rapoo

JAVA中的编码
public class code
{
public static void main(String[] args) throws Exception {
String s = "abc你好么";
byte[] bytes1 = s.getBytes("Unicode");
System.out.println(bytes1.length); // 14
byte[] bytes2 = s.getBytes();
System.out.println(bytes2.length); // 9
}
}
这段代码中,,unicode占两个字节那怎么输出是14应该是12吧???
那默认的为什么又不是unicode编码的呢??

[解决办法]
UNICODE标准定义了UTF-8、UTF-16、UTF-32三种编码格式

byte[] bytes1 = s.getBytes("UTF-8");
System.out.println(bytes1.length); // 12

byte[] bytes1 = s.getBytes("UTF-16");
System.out.println(bytes1.length); // 14

采用的编码方式不一样,结果就不一样

getBytes()
按照平台缺省的字符编码方式把该 String 转换成字节,并把结果存到一新的字节数组中。
[解决办法]
应该是编码格式不一样,表达的内容虽然一样,但占用空间不一样
[解决办法]
Unicode是UTF-16,多余两个字节是保存大头小头信息的吧,猜测~

读书人网 >J2SE开发

热点推荐