java String getBytes

2014-11-24 03:05:59 · 作者: · 浏览: 0

大家都知道java的char是双字节字符,而String提供了getBytes的函数,这个函数得到的bytes数组是什么样的形式存在呢?是双字节的字符顺序存在数组中吗?

做个试验

String ts1 = "112";

byte[] ts2 = null;

ts2 = ts1.getBytes();

这个输出的是112的ascii 49 49 50

注意到这个有个重载的方法加了个参数encoding,换个试试

String tests1 = "112";

byte[] tests2 = null;

try {

ts2 = ts1.getBytes("UTF-8”);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

输出还是494950

String tests1 = "112";

byte[] tests2 = null;

try {

ts2 = ts1.getBytes("UTF-16LE”);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

输出变为了490 490 500

在看一下sdk,--!写的太清楚了。。

byte[] getBytes()

使用平台的默认字符集将此String 编码为byte 序列,并将结果存储到一个新的byte 数组中。

byte[] getBytes(Charset charset)

使用给定的charset 将此String 编码到byte 序列,并将结果存储到新的byte 数组。

系统的默认的charset是GBK,而Utf-8使用的是变字节编码,Utf-16用的二字节定长编码

摘自:shcalm的专栏