Python | 对字符编码的认识

由于计算机只能识别和处理数字,因此计算机若要处理字符串,则需要将其转化成数字的形式,也就是以二进制(0和1组成的序列)的形式进行存储和操作。字符被翻译成数字的过程,被称为编码;反之,被称为解码

只要计算机编码和解码过程一致,可以制定任意的数字来代表字符。因此在早期的时候,存在很多种不同的编码。但是,在跨越不同的计算机系统的时候,编码规则的不同导致了无法正常地在系统中识别来自对方的文本数据,结果显示为乱码。

为了避免这个问题,美国对计算机系统编写了标准编码,被称为 ASCII(美国信息交换标准代码),通常用1个字节(byte)表示一个字符使用 0~127来表示键盘上的字符以及一些数字和符号。例如 大写字母A~Z 用 65~90 来表示,小写字符 a~z 用 97~122。

但是每个国家都有自己所需要的符号,因此各国基于ASCII 标准进行对字符编码的拓展。例如 中国编写了GB2312。不同的语言又会产生文本显示的乱码,因此现在大部分系统都使用 Unicode 编码标准,这个标准几乎包含了所有书面语言的字符。通常使用 2个字节来表示一个字符

然后,新的问题又出现了。当文本都是英文的时候,Unicode编码会比ASCII编码多出一倍的存储空间,导致存储的浪费和影响数据传输的速度。因此又有一个新编码标准应用而生了—— UTF-8编码,定义成“可变长编码”,将Unicode字符根据不同数字的大小打包成1-6个字节,用单个字节存储ASCII集合中的字符,中文通常为3个字节,可能最多需要用4-6个字节来表示一些更深奥、更生僻的词。

了解ASCII编码,Unicode编码,UTF-8编码后,学习了一下计算机系统通常的字符编码的工作方式

计算机内存:Unicode编码

硬盘存储和数据传输过程:UTF-8编码


在Python3.0中,字符串以Unicode编码,也就是说,Python支持多语言编辑。例如一个字符串中可包括英文和中文。

Python提供了单字符和数字切换的内置函数。ord()返回单字符串的数字编码,chr() 返回数字编码对应的字符。

Fig.1
Fig.2

Python还提供了字符串在不同编码之间转换。

encode() :将Unicode编码的字符串,返回出指定的编码类型的字节流内容。英文可以用ASCII编码为字节流,内容不变;中文可以用UTF-8编码,但不能用ASCII编码,因为超出了ASCII编码范围。

Fig.3

decode(): 将字节流数据转换成字符串

Fig.4
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 字符是用户可以读写的最小单位。计算机所能支持的字符组成的集合,就叫做字符集。字符集通常以二维表的形式存在。二维表的...
    刘惜有阅读 8,211评论 2 14
  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 8,653评论 0 13
  • 你要做的其实并不多 如果你是孩子 那就好好玩 如果你是学生 那就好好学习 如果你是大学生 那就好好学习好好玩 你要...
    阿浩去旅行阅读 231评论 0 0
  • Day4/21 8-vivizeng-深圳 【书籍名称】沟通的艺术 1~25# 【阅读心得】 1、 我们为什么要沟...
    vivi_zeng阅读 257评论 0 1
  • 人 总擅长于写悲伤 因为 伤让人能沉静 伤让人感知情感的脆弱 伤感下写的文字更真实地袒露心声 可是 有时候 我们不...
    漫漫无忧阅读 159评论 0 0