标签:
首先是eclipse的默认编码,点击file->properties可以看到eclipse的默认编码是GBK.
如何获取一个字符串的编码呢?
如:
String str = "D1篇笔记";
byte[] b1 = str.getBytes("gbk");
for (byte b : b1) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
输出结果: 44 31 c6 aa b1 ca bc c7,其中字母和数字为一个字节表示,汉子为两个字节表示
先将字节以16进制(int)的方式表示,我们知道,int在java中占用4个字节,所以将一个字节转化为int,前面将会补上24个0,与上一个FF转化为8位
但是目前运用比较广泛的是utf-8,也用上面的方法获取一下编码
byte[] b2 = str.getBytes("utf-8");
for (byte b : b2) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
输出结果为:44 31 e7 af 87 e7 ac 94 e8 ae b0.其中字母和数字占用一个字节,汉字占用三个字节
而在java中使用的是双字节编码 utf-16be (最低地址存放高位字节)来存储数据的,即大端存储
如法炮制
byte[] b3 = str.getBytes("utf-16be");
for (byte b : b3) {
System.out.print(Integer.toHexString(b & 0xff) + " ");
}
输出结果为:0 44 0 31 7b c7 7b 14 8b b0 ,可以看出字母数字汉子都是占用两个字节
所以,如果将文本编码转化为字符串时不按对应的编码方式转化的话,则会出现乱码
使用System.out.println(new String(b3, "utf-16be);可将字节转换回去
标签:
原文地址:http://www.cnblogs.com/BlogOfWhisperoy/p/5439955.html