字符集与编码
字符和字节
字节
即byte,是Java中的一种基本数据类型,在计算机中,1byte = 8bit,1个字节等于8个比特位
字节是计算机中数据存储的最小单位,我们通常都是说 该文件是多少字节,也就是多少byte
计算机中的内存换算就是采用byte作为单位
例如:
1 KB = 1024 byte
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
实际上,一个字节本质就是8位二进制,计算机中采用二进制的方式来存储数据.8个二进制位能表示的范围就是255
字符
字节是计算机中存储的基本单位,字符是现实生活中人们使用的记号,简单来说,字符就是一种记号.
现实生活中,"a","中","国"等都是一个字符.
字节和字符的关系
想象一下,计算机只知道字节,而在现实生活中,人们只知道字符,那要怎么把字符跟字节联系起来呢?
于是,这就产生了编码的概念.
所谓编码,通俗来讲,就是将字符与字节之间进行转换.
字符会按照一定的编码规则变成字节,在不同的编码规则中,一个字符可能由一个字节存储,也可能有多个字节存储
字符集
字符集也就是字符的集合,包含了很多字符.
编码与解码
String编码
方法名称 | 说明 |
---|
byte[] getBytes() | 使用平台的默认字符集将该String编码为一系列字节,将结果存储到新的字节数组中 |
byte[] getBytes(String charsetName) | 使用指定的字符集将该String编码为一系列字节,将结果存储到新的字符数组中 |
String解码
构造器 | 说明 |
---|
String(byte[] bytes) | 通过使用平台的默认字符解码指定的字节数组来构造新的String |
String(byte[] bytes,String charsetName) | 通过指定的字符集解码指定的字节数组来构造新的String |
代码演示
String name = "我爱你中国";
byte[] bytes = name.getBytes(StandardCharsets.UTF_8);
System.out.println(Arrays.toString(bytes));
String rs = new String(bytes);
System.out.println(rs);