ASCII码:是使用一个字节来表示一个字符,一个字节包括8个位,每个位可以为0和1两个状态,则一个字节有2^8次方共256种状态,所以ASCII码使用每个状态来表示一个字符,而英文字符只有128个字符,所以ASCII码只需字节 的低7位来表示一个英文字符,第8个高位为0
Unicode:由于ASCII只能表示128个字符,例如我们伟大的中国和欧洲等国的字符个数远远超过256,所以需要比ASCII更强大的编码方式,Unicode则可以使用1~4个字节来表示一个字符。 但是如果一个文本中只有英文的话,若Unicode规定每个字符都用4个字节来表示,那意味着所有每个英文字符会有3个字节的0,这会使整个文本文件扩大至4倍。 所以Unicode需要不同的实现方式来优化不同情况
UTF-8:Unicode默认是使用2个字节表示一个字符,而UTF-8是一种变长的编码方式,其也是Unicode编码的其中之一编码方式。其可以使用1~4个字节来编码一个字符。 具体是:若开始字节开头为0,则后面7位为Unicode编码(总共一个字节表示一个字符);若开始字节为1,则开始字节有多少个连续的1就有多少个字节表示一个字符,除过开始字节的其他字节都以10开始