• 什么是编码


    事实上计算机只认识0和1,然而我们却可以通过计算机来显示文本,这就是靠编码实现的。编码其实就是约定的一个协议,比如ASCII编码约定了大写字母A对应十进制数65,那么在读取一个字符串的时候,看到65,计算机就知道这里说的是字母A的意思。

    由于计算机是美国人发明的,所以这个ASCII编码设计时只采用1个字节存储(事实上只用了7位,1个字节有8位),包含了大小写英文字母,数字和一些符号。但是计算机在全世界普及之后,ASCII编码就成了一个瓶颈,因为1个字节是完全不足以容纳各国语言的。

    大家都知道英文只用26个字母就可以组成不同的单词,而汉字光常用的就有好几千个,至少需要2个字节才足以存放,所以后来中国制定了GB2312编码,用于对汉字进行编码。

    然后日本为自己的文字制定了SHIFT_JIS编码,韩国为自己的文字制定了EUR-KR编码,一时之间,各国都制定了自己的标准。不难想象,不同的标准放在一起,就难免出现冲突,这也正是为什么最初的计算机总是容易看到乱码的现象。

    为了解决这个问题,unicode编码应运而生。unicode组织的想法最初也很简单:创建一个足够大的编码,将所有国家的编码都加进来,进行统一标准。

    没错,这样问题就解决了。但新的问题也出现了:如果你写的文本只包含英文和数字,那么用unicode编码就显得特别浪费空间(用ASCII编码只占用一半的存储空间)。所以本着能省一点是一点的精神,unicode还创造了许多实现方式。

    比如常用的utf-8编码就是unicode的一种实现方式,它是可变长编码,简单的说,就是当你的文本是ASCII编码的字符时,它用1个字节存放,而当你的文本是其他unicode字符的情况,他将按一定的算法转换,每个字符使用1-3个字节存放,这样便实现了有效节省空间的目的。

  • 相关阅读:
    数字类型内置方法
    流程控制之while循环
    流程控制之if判断
    基本运算符
    格式化输出的三种方式
    Python与用户交互
    解压缩
    布尔值(bool)
    django基础 -- 8.cookie 和 session
    为博客园文章添加目录的方法
  • 原文地址:https://www.cnblogs.com/themost/p/6604744.html
Copyright © 2020-2023  润新知