彻底弄清unicode与utf-8的区别
在弄清unicode与utf-8的区别之前先介绍一下字符串编码
1.ASCII编码
- 因为计算机只能处理数字,所以字符、字符串或者说是文本在计算机中要转换成二进制数字进行保存,计算机中8个bit为一个字节,所以在计算机中一个字节最大能保存255个数字。由于历史的原因,计算机是美国人发明的,所以一个字节就可以表示所有的字符了,ASCII编码就成为美国人的标准编码。
2.GB2312编码与其他编码
- 但随着计算机在全世界的普及,ASCII编码就无法满足其他语言字符的数量了,国人制定了GB2312编码,用两个字节表示一个汉字,不仅如此GB2312还把ASCII编码包含进去了。同理,其他国家也分别制定了适合自己国家语言的编码标准。这就导致了编码标准的混乱,如果多种语言混合显示就一定会出现乱码。
3.unicode编码
- Unicode:Unicode(又称统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。这是百度百科的解释.
总结一句话:Unicode就是为了解决上面说的编码标准混乱而制定的一种统一编码 - 但是Unicode也有缺点:
- 汉字“中”已近超出了ASCI编码的范围,用unicode编码是20013二进制是01001110 00101101
- 字母A用ASCI编码十进制是65,二进制0100 0001;而A用unicode编码只需要前面补0二进制是00000000 0100 0001
- 虽然乱码问题解决了,但是如果内容全是英文, unicode编码比ASCII需要多一倍的存储空间,同时如果传输需要多一倍的传输。
4.utf-8编码
- 所以为了节省空间出现了可变长的编码“utf-8”,在utf-8中,英文占一个字节,中文占3个字节,生僻字占4-6个字节。显而易见,如果传输大量英文时utf-8编码会节省大量空间