zoukankan      html  css  js  c++  java
  • 字符编码小结


    预备知识

    ==============================
    存储器

    位(bit),字节(byte),字(word), 双字(double word)

    1 byte = 8 bits
    1 word = 2 bytes = 16 bits
    1 double word = 2 words = 4 bytes = 32 bits


    ASCII编码

    ==============================
    单字节

    来自远古时代。
    计算机最初是在美国等国家发明的,所以只需要把英文字母、数字、标点符号表示出来就好。
    这些字符不多,也就200多个。

    使用一个字节,从00000000到11111111共2^8=256个字符。
    如:01000001(即十进制的65)表示字符"A"

    Python的chr和ord函数,可以对ASCII编码进行了转换。
    如:chr(65) == 'A', ord('A') == 65


    ISO-8859-1编码

    ==============================
    单字节

    ISO-8859-1编码是单字节编码,向下兼容ASCII。
    其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。

    此字符集主要支持欧洲使用的语言。


    Unicode编码

    ==============================
    双字节

    两个字节,从00000000 00000000到11111111 11111111共表示256*256个字符

    在Unicode中,原本ASCII中的127个字符只需在前面补一个全零的字节即可,
    比如前文谈到的字符‘a’:01100001,在Unicode中变成了00000000 01100001。

    优点:基本各种语言的字符,如东亚文字,阿拉伯文字,藏文字等等
    缺点:对英文来说浪费严重,原本只需一个字节就能传输的英文现在变成两个字节,非常浪费存储空间和传输速度。


    unicode在很长一段时间内无法推广,直到互联网的出现。


    这是 Python3 中的默认编码!!!!!!

     


    UTF-8编码

    ==============================
    可变长字节

    使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

    UTF-8的编码规则很简单,只有二条:
    1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
    2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

    比如​汉字的"中"字在Unicode中是01001110 00101101,而在UTF-8编码中是11100100 10111000 10101101。


    GB2312编码

    ==============================
    双字节编码

    GB2312编码范围:A1A1-FEFE,其中汉字编码范围:B0A1-F7FE。

    GB2312编码是第一个汉字编码国家标准,由中国国家标准总局1980年发布,1981年5月1日开始使用。
    GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。
    同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。


    GBK编码

    ==============================
    双字节编码

    GB2312编码的扩展,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902。
    总共收录了883个符号,21003个汉字及提供了1894个造字码位。

    由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。


    ANSI编码

    ==============================
    混合编码

    Windows简体中文操作系统中,ANSI是默认的编码方式。

    对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版)


  • 相关阅读:
    2017《Java技术》预备作业 计科1501 杨欣蕊
    Java技术预备作业02杨欣蕊
    系统无法从光盘启动
    动态数组ArrayList的使用
    dbgrid数据显示和数据源不同
    异步任务判断服务器是否开启
    Java字符串格式化
    思科2960 监听端口设置
    64位win7安装jdk和eclipse
    Delphi临界区的使用
  • 原文地址:https://www.cnblogs.com/hhh5460/p/5538292.html
Copyright © 2011-2022 走看看