ASCII编码
学编程的时候,ASCII是最早介绍的字符编码.
标准ASCII使用7位二进制数,因为一个字节占8位,所以在第一位补0形成8位....举个栗子:
在ASCII编码中,字母A的表示为:
二进制: 0100 0001
十进制: 65
十六进制: 0x41
所以看前面的问题:0xe7是什么?...所以问题来了
怎么确定它是Unicode而不是两个字符组成的ASCII?
为了解决上面的问题,如果所有字符都用两字节表示,那么只用到7位的字符A就会浪费掉将近一个字节的空间.这怎么解决?...主要聊聊常见的UTF-8
UTF-8规则:
如果字符只有一个字节则其最高二进制位为0,后7位是字符的Unicode码.单字节的编码和ASCII一致
对于N字节(N>1),第一个字节前N位设为1,第N+1...Latin-1属于单字节编码,最多能表示0-255的范围,即$2^8$,所以0xe7就在它的表示范围内,因此可以解码.