Python-练习 23 字符串,字节和字符编码

本文通过Python的ex23.py练习介绍了字符、字节和编码的基本概念,特别是UTF-8编码。讨论了ASCII、Unicode编码标准以及如何在Python中处理字符串和字节序列,强调了解码(.decode())和编码(.encode())的重要性。
摘要由CSDN通过智能技术生成

Python-练习 23 字符串,字节和字符编码

下载一个名为 languages.txt 的文本文件
下载地址:https://learnpythonthehardway.org/python3/languages.txt
点开,右键,“另存为” txt 格式,放在练习文件夹,再打开
这个 languages.txt 文件包含了一个人类各种语言的列表,并且是以 UTF-8 进行编码的。

这个文件列了一个人类的自然语言列表来说明一些有趣的概念:
1. 现代计算机是如何储存自然语言然后显示和加工的,还有 python 3 是如何调用这些字符串的。
2. 你是如何(同时也是必须)把 python 的字符串 “编码”(encode)和“解码”(decode)成字节(byte)形式的。
3. 如何处理你字符串里以及字节处理过程中的错误。
4. 如何阅读代码并弄明白它的意思,即使你从来都没有看到过这些代码。

此外,你还会一睹 python 3 的 if 语句以及处理一系列东西的列表。你不用马上掌握这些代码或者理
解这些概念,你会在接下来的练习中有足够的练习来学习。现在你只需要尝个鲜,并且弄明白前面所述
的四个问题即可。

开关、惯例(conventions)和编码

在深入讲解代码的含义之前,需要学习一些关于数据是如何存储在计算机中的基本知识。
现代计算机非常复杂,但是核心就是大量的电灯开关。计算机用电来切换开关。这些开关可以以“开”代表1,以“关”代表 0。以前有各种各样奇怪的计算机做的不只是 1 和 0 的事情,但现在所有的计算机都是一堆 1 和 0。1 代表着运行、有电、开着、进行、存在。0 代表着结束、完成、消失、关机、没电。我们把这些 1 和 0 叫做 “比特”(bits)。

但是,一个只能让你用 1 和 0 操作的计算机将会非常低效和无聊。计算机接收了这些 1 和 0 之后,会用它们来编码更大的数字,比如用 8 个 1 和 0 来编码 256 个数(0-255)。那么编码到底是什么意思?它其实就是一个关于比特序列如何表示数字的公认标准,比如人们约定 00000000 就代表数字 0,11111111 就代表数字 255,00001111 就代表数字 15。即便是在计算机诞生早期的世界级战争中,计算机也是用这些约定的 1 和 0 来做大规模计算的。

现在我们把一个“字节”(byte)称为 8 个比特(1 和 0)的序列。过去每个人都有他们自己对于字节的惯例(convention),所以你还是会遇到一些人说,这项规定应该灵活一些,比如可以是 9 个、7 个或者6 个字节序列。但是现在我们都说一个字节是 8 个比特,这是我们的惯例,它定义了我们对于字节的编码。当然还有用 16、32、64 甚至更多个比特来给字节编码的。

一旦你有了字节,你就可以开始存储和显示文本了,不过要用另一种惯例来让数字映射(map)成文字。在计算机发展的早期,有很多关于映射的惯例,有 8 个比特的,7 个比特的(或者更多或更少)。但是最终美国信息交换标准编码(即 ASCII 码)成为最流行的惯例。这个标准建立了从一个数字到一个字母的映射,比如 90 是 Z,用比特的话就是 1011010,对应到计算机里面的 ASCII 码表。你可以在Python 里面试试这个 (Windows 系统下在 Powershell 输入 python ,然后回车,就会出现 >>> ,MacOS 输入 Python3.6 ):

>>> 0b1011010
90
>>> ord ( ' Z ' )
90
>>> chr ( 90 )
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值