【关于】 字符串编码“ASCII,Unicode,UTF-8码”
本文四点内容:
1.为什么要编码?
这个问题凭我个人简单的语言来说了。我们需要用计算机来处理信息,但是计算机只能处理二进制的数据,所以我们要让我们现实生活中的语言用编码来表示。并且要让这个世界上所有的计算机互通,因此我们需要一套统一的标准。比如在这套标准中,A就是0100 0001。
我们在网上看到的各种文字信息,用高级语言编程,发送一篇文章,中途都要通过软件里的编码系统把我们的字编码这一串串0和1,方便我们存储,发送和机器翻译(编译解释),最终显示出来的时候都要通过解码系统把这一个个0和1转化为我们能看的信息。
2.ASCII码
ASCII码应该是我们大部分人碰到的第一个编码标准。全称AmericanStandardCode forInformationInterchange,美国信息交换标准代码。
它的编码系统是八个比特,一个字节。所以可以给128个符号编码,其中包括,大小写英文字母,阿拉伯数字,符号等,也是世上最通用的单字节编码系统。
ASCII3.Unicode码
ASCII码是美国人发明的,因此他们是需要表示字母数字加一些东西就行了,也只需要8位而已。可中国怎么办呢,韩国日本怎么办呢。为了能让自己国家语言能够编码存储,中国制定了GB2312编码,日文制定了shift_JIS编码,韩文编到了Euc-kr里。
这样做的坏处就是不兼容,早期的网上可能经常出现乱码,一大原因应该就是各自的编码系统不同,不同文件互相转换时出错了。我们需要全世界统一的编码系统。
Unicode码就是这样的系统,它包含了所有的文字,一般是两个字节,一些生僻的字会用4个字节表示。
4.UTF-8码
Unicode是两字节,所以原来ASCII码的字符,在Unicode里直接在前一个字节里添0就好了。所以A在Unicode码里就是 0000 0000 0100 0001。
Unicode码作为全世界通用码也存在问题,它是两个字节。但如果你一个文件全是用英文数字写的,用Unicode存储就相当于白白浪费了一半的空间。
UTF-8码应运而生。他是可“可变长度的”,根据字符自发编码成1-6个字节,英文字母是一个字节,汉字一半三个字节。另一个好处是,这样的话ASCII码还能成功在UTF-8里完美兼容,历史上ASCII码的软件可以在UTF-8码下继续工作。
总结:现在计算机内存中统一使用Unicode码,在涉及存储传输时会转化成UTF-8码节约空间。