1. 字节与字符区别
字节 是存储容量的基本单位
字符 是数字,字母,汉字以及其他语言的各种符号。一个字符由一个字节或多个字节的二进制单位组成 。
1字节=8个二进制单位:
不同的编码下不同的字节数
“字”在 GBK 编码下占 2 字节,在 UTF-16 编码下也占 2 字节,在 UTF-8 编码下占 3 字节,在 UTF-32 编码下占 4 字节。
java是双字节编码utf-16be,一个中文两个字节,一个英文两个字节
详细参考 : 字符与字节有什么区别
2.将字符串转换成字节序列
String s = "慕课12"
byte[] bytes1 = s.getBytes();
for (byte bytes:bytes1){
//将字节(转换成int)以16进制的方式显示
System.out.println(Integer.toHexString(bytes & 0xff)+"");
}
//结果显示:
20
c4
bd
bf
ce
3. 计算某文字的字节序列的长度
`new String("2").getBytes().length`:根据结果判断当前的编码格式
`new String("2").getBytes("gbk").length`:按gbk计算字节数
出现unhandled Exception
时在方法上抛出异常即可,或try/catch包围
4. 将字节序列转为字符串
当你的字节序列是某种编码时,若此时想把字节序列变成字符串,也需要用这种编码格式,否则会出现乱码。(字节序列与字符串的编码格式需要保持一致)
String s = "慕课12"
byte[] bytes1 = s.getBytes();
`new String(bytes1)`:按项目编码格式
`new String(bytes1,"gbk")`:按gbk将字节序列
转为字符串
String str2 = new String(bytes1,"utf-16");//使用utf-16
文本文件就是字节序列,可以是任意编码的字节序列,
如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码,复制的话机器都认识。
代码参考demo1-1