0. 代码和运行结果
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
/**
* @DESCRIPTION:
* @USER: shg
* @DATE: 2023/2/24 9:20
*/
public class Test_1 {
public static void main(String[] args) {
characterOccupyByte();
System.out.println("******");
chineseOccupyByte();
}
private static void chineseOccupyByte() {
String str = "中";
byte[] utf8Bytes = str.getBytes(StandardCharsets.UTF_8);
System.out.println("一个中文字符在UTF-8编码格式下,对应的字节和二进制表现形式如下:");
for (byte utf8Byte : utf8Bytes) {
System.out.println(utf8Byte+" "+Integer.toBinaryString(utf8Byte));
}
byte[] gbkBytes = str.getBytes(Charset.forName("GBK"));
System.out.println("一个中文字符在GBK编码格式下,对应的字节和二进制表现形式如下:");
for (byte gbkByte : gbkBytes) {
System.out.println(gbkByte+" "+Integer.toBinaryString(gbkByte));
}
}
private static void characterOccupyByte() {
String str = "a";
byte[] utf8Bytes = str.getBytes(StandardCharsets.UTF_8);
System.out.println("一个英文字符在UTF-8编码格式下,对应的字节和二进制表现形式如下:");
for (byte utf8Byte : utf8Bytes) {
System.out.println(utf8Byte+" "+Integer.toBinaryString(utf8Byte));
}
byte[] gbkBytes = str.getBytes(Charset.forName("GBK"));
System.out.println("一个英文字符在GBK编码格式下,对应的字节和二进制表现形式如下:");
for (byte gbkByte : gbkBytes) {
System.out.println(gbkByte+" "+Integer.toBinaryString(gbkByte));
}
}
}
一个英文字符在UTF-8编码格式下,对应的字节和二进制表现形式如下:
97 1100001
一个英文字符在GBK编码格式下,对应的字节和二进制表现形式如下:
97 1100001
************************************************
一个中文字符在UTF-8编码格式下,对应的字节和二进制表现形式如下:
-28 11111111111111111111111111100100
-72 11111111111111111111111110111000
-83 11111111111111111111111110101101
一个中文字符在GBK编码格式下,对应的字节和二进制表现形式如下:
-42 11111111111111111111111111010110
-48 11111111111111111111111111010000
Process finished with exit code 0
1. 英文占用的字节
1.1. UTF-8编码格式下,一个英文字符占用的字节个数
从上面运行示例可以看到,在UTF-8编码格式下,一个英文字符占用1个字节
1.2. GBK编码格式下,一个英文占用的字节个数
- 从上面运行示例可以看到,在GBK编码格式下,一个英文字符占用1个字节
1.3. 总结
- 英文字符占用的字节个数和编码格式无关,一个英文字符占用1个字节
2. 中文占用的字节
2.1. UTF-8编码格式下,一个中文字符占用的字节个数
- 从上面运行示例可以看到,在UTF-8编码格式下,一个中文字符占用3个字节
2.2. GBK编码格式下,一个中文占用的字节个数
- 从上面运行示例可以看到,在GBK编码格式下,一个中文字符占用2个字节
2.3. 总结
- 中文字符占用的字节个数和编码格式有关。UTF-8编码格式下,一个中文字符占用3个字节,GBK编码格式下,一个中文占用2个字节。