• 计算机是由美国人发明的,所以计算机中能识别的只有英语,也即一些字母和对应的符号。计算机对这些符号的识别编码就是ASCII码

  • 计算机不断发展,各个国家都想要计算机能显示存储自己的语言,所以各国又为本国语言出了一套编码,如中国的GB2312

  • 计算机发展为全球性技术,但是每个国家都有自己的一套编码,所以一个二进制数通过不同的编码就可以被解析成不同的符号,那么打开一个文件,就首先需要知道文件是用什么编码的,不然就会导致文件乱码。为了解决乱码问题,全球发展出用统一的一套编码来表示各国的语言,这就是Unicode编码。因为包含了多国语言,所以unicode是一个很多的字符集编码。

  • unicode虽然定义了统一的编码,但是存储在计算机的方式/计算机识别的方式却仍然是个问题,例如,英语字母C是2B——43,而中文字是4E00——19968,前者8个bit即可表示,后者需要16bit,如果计算机以8bit识别为一个字符,那么中文就会乱码;若以16bit为一个字符,两者都可以显示,但是大写字母C会有8bit为空闲;若需要64bit甚至更多,那么对于小号字符存储会造成很大的浪费

  • 解决方法就是UTF-8,这是unicode的一种实现方式,是一种变长编码,在每个字节中用前几位bit,来事先说明本字符是要应用几字节存储的。

    【UTF-8中英文字母的编码和ASCII一样】

参考:字符编码笔记:ASCII,Unicode 和 UTF-8