最初ascii编码方式只对128个符号进行编码,由于不能满足其他国家的需要,各个国家都发行了各自的标准,导致乱码的发生。由此产生了unicode编码,以统一各种语言文字的编码。
最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。显然,这样要表示各种语言中所有的字符是远远不够的。Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示。
utf-8的编码方式是不定长的编码方式,它用1到6个字节编码Unicode字符。由于使用utf-8只需要一个字节存储英文字符,当存储的文件很多英文时,使用utf-8来存储是非常节省空间的。
但是在内存中使用不定长的utf-8来存储数据,因为它是不定长的编码格式,会使得处理数据困难。所以在内存中一般使用unicode来编码数据。