美文网首页
【Python自学】03.字符串和编码(上)

【Python自学】03.字符串和编码(上)

作者: Raimond | 来源:发表于2017-10-24 14:54 被阅读0次

    打了鸡血,一天二更
         

    动态图尝试上传ing
       之前也说过字符串是一种数据类型,但是它比较特殊,主要是因为编码问题。既然如此,先搞清楚下计算机编码的相关内容。

    计算机编码

    • 只处理数字,要处理文本就得先把文本转为数字才能处理。
    • 早期设计 8 bit 表示一个字节,一字节表示最大整数 11111111=十进制255
    • 两字节可表示最大65535,四字节4294967295
    • 世界上有上百种语言,不同的国家可能有不同的标准,例如 ASCII 和 GB

    ASCII编码:

    美国人最早只把127个字母编码进计算机去,大小写英文字母、数字和符号。例如大写 A 编码 65,小写 z 编码是122。

    GB2312编码:

    我国为了计算机处理中文(需要至少两个字节),创建的一种与 ASCII 编码不冲突的编码。

    Unicode标准/编码

    因为各国标准不一,创的编码也许完全不同,所以会不可避免地出现冲突,结果就是在多语言混合的文本当中,显示出来一堆的乱码。于是乎,Unicode标准就是在此时应运而生,将所有语言统一到一套编码里面。

    • 常用两个字节表示一个字符,非常偏僻的字符用上 4 个
    • 现代大多数操作系统和编程语言都支持该编码

    ASCII与Unicode的区别:

    • ASCII编码是 1 字节,而Unicode通常是2字节
    • ASCII编码中,A 是十进制的65(010000001),字符 0 是十进制的48(00110000)(注意‘0’和0不同)。汉字已经超出 ASCII 编码范围,而 Unicode 的十进制是20013(01001110 00101101)
    • 如果要将 ASCII 编码中的 A 改为 Unicode 编码,前面补 0 即可:00000000 01000001

    UTF-8编码:

    • 如果全是用 Unicode 编码,乱码解决了,但是写的文本全英,用 Unicode 编码比 ASCII 编码需要多一倍的存储空间,在存储和传输上就非常不划算。于是乎节约版“可变长编码”UTF-8又横空出世。
    • 把 Unicode 字符根据不同数字大小编写成 1-6 个字节:    
        常用英文字幕编成1字节
      汉字通常编写成3个字节,很生僻的字符编写成 4-6 个字节
    • 优点:
        如果传输的文本包含大量英文字符,将节省大部分空间
        大量支持 ASCII 编码的历史遗留软件可以在 UTF-8 编码下继续工作。

    目前计算机系统通用的字符编码工作方式

    • 在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者传输的时候就转换成为 UTF-8 编码。
    • 使用笔记本编辑时:
                  读取时UTF-8转换成Unicode,保存时相反
    • 浏览器:
                 浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器
        很多网页上的源码有类似<meta charset="UTF-8" />的信息,表示该网页正是用的 UTF-8 编码。

    好多文字...基本上搬过来了,嘛,随便看看得了
      

    反正又没有说要考试

    相关文章

      网友评论

          本文标题:【Python自学】03.字符串和编码(上)

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