美文网首页
几种字符编码

几种字符编码

作者: SimonJoe246 | 来源:发表于2018-01-25 16:24 被阅读0次

    本文参考廖雪峰老师的Pyhton教程

    几种编码

    ASCII

    计算机只能处理0和1,所有的文本都要转换成数字才能处理。早期计算机在设计时采用8个比特(bit)为一个字节,计算机是由美国人发明的,他们将26个字母、数字和一些符号编码到计算机中。一个字节(8位)表示,最多能表示128种字符,称为ASCII码。

    Unicode

    非英语国家只能规定适用自己语言的编码,如中国制定了GB2312编码,日本制定了Shift_JIS编码,韩国制定了Euc-kr编码。如此以来,各国执行不同的标准,如果文本同时出现多种语言,则无法正常显示,会有乱码。

    所以Unicode应运而生,它把所有语言都统一到一套编码里,这样就不会出现显示乱码问题了。

    上面说到,ASCII采用1个字节编码,Unicode通常采用2个字节编码,所以最大能表示65536种字符。

    字母A用ASCII码表示是十进制的65,二进制中是`0100 0001

    字符0用ASCII码表示是十进制的48,二进制中是0011 0000。注意,字符0和整数0是不同的。字符用ASCII码表示只占一个字节,十进制为48,整数0在c语言中占2个字节 ,十进制为0

    汉字已经超出了ASCII码的范围,在Unicode中,十进制表示为20013,二进制为01001110 00101101

    那么字符A在Unicode中怎么表示呢?

    直接在其ASCII码的二进制表示前加0即可,即00000000 01000001

    UTF-8

    采用Unicode统一编码的方式,解决了多语言冲突显示乱码的问题,但是

    Unicode有一个问题,如果我写的文本基本为英文的话,采用unicode编码的话,该文件所占用的内存空间比采用ASCII编码多一倍,在存储和传输上就极不划算。

    由此,人们想出了把Unicode编码转换成“可变长编码”的UTF-8编码,UTF-8编码把Unicode中的字符按不同的数字大小编码成1-6个字节,英文通常为1个字节,汉字通常为3个字节,只有极其生僻的字符才可能用到4-6个字节。如果要传输的文本以英文为主,则采用UTF-8编码能节省大量的存储空间。

    字符 ASCII Unicode UTF-8
    A 0110 0001 00000000 01100001 0110 0001
    x 01001110 00101101 11100100 10111000 10101101

    从上面表格还可以发现,UTF-8已经将ASCII码包含进来了,所以一些历史遗留的只支持ASCII码的软件可以在UTF-8下继续使用。

    ps: 以前也看过这几个编码,勉强知道个大概意思,但很难理解,直到看到廖老师的教程,感觉突然间豁然开朗。

    相关文章

      网友评论

          本文标题:几种字符编码

          本文链接:https://www.haomeiwen.com/subject/eoevaxtx.html