因为 ASCII 只支持 128 个英语字符,又因为理论上 8 个二进制位总共能组成 256 种字符,为了支持编码成其他语言,可以利用剩下未利用的128 组合,在原有 128 个英语字符的基础上额外添加 128 个其他语言的字符,创造新的编码,但这样会造成每种语言都有自己的编码,同一种二进制位组合在不同编码下会对应不同的字符,对于新接收的二进制数据需要清楚其原来的编码才能得到正确的内容,如果编码使用错误就会造成乱码现象
同时 8 个二进制位在某些语言下不足以对应所有字符,因此需要新增二进制位的数量来支持更多的字符
Unicode 就是可以对应全世界所有字符的编码,该编码会使用多个字节去表示一个字符,这样计算机就不会把该编码和 ASCII 搞混而分不清看到一个字节时是否对应字符,至于具体使用几个字节去表示又衍生出了几种实现方式,比如 UTF-8、UTF-16、UTF-32