【Java基础】编码ASCII,Unicode,UTF-8

1.编码是什么

在计算机内部,所有数据都使用二进制表示,每一个二进制位有0和1两种状态。8个二进制位表示一个字节(byte),从0000 0000 到1111 1111 共256种,每一种可以用来表示一个符号。
类似于密码本,用来对应我们使用的符号和二进制数。

2.ASCII编码

美国制定的字符编码,对应英语字符与二进制之间的关系,使用一个字节(8位二进制)规定了128个字符,这128个符号只占用了一个字节的后面7位,最前面1位规定为0。
查看ASCII码表大写字母A的十进制是65,二进制是0100 0001
image

缺点:
(1)不能表示所有字符
(2)相同的编码表示的字符不一样

3.Unicode编码

将世界所有符号都纳入其中,使用2个字节16位表示,可编65536个符号,用十六进制4位表示一个编码
image
符号A对应的十六进制为0041,符号K对应的十六进制为004B

4.UTF-8编码

UTF-8编码是一种Unicode的实现方式。
使用变长的编码方式,可以使用1~6个字节表示一个符号,根据不同的符号而变化字节长度。
编码规则
(1)1字节,最高位为0,其余7位用来对字符进行编码(等同于ASCII编码)
(2)多字节,假设n个字节,第一个字节前n位为1,n+1位为0,该字节剩余各位用来对字符进行编码;第一个字节之后的所有字节,都是最高两位为10,其余6位用来对字符进行编码。

image

ASCII编码表
Unicode编码表
UTF-8编码表

posted @ 2022-08-18 16:30  植树chen  阅读(247)  评论(0编辑  收藏  举报