《英文和中文占用几个字节?》

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个字节。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值