前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >零基础学习 Python 之字符编码

零基础学习 Python 之字符编码

作者头像
编程文青李狗蛋
发布2019-11-07 15:20:50
3360
发布2019-11-07 15:20:50
举报
写在之前

大家好,这里是零基础学习 Python 系列,在这里我将从最基本的Python 写起,然后再慢慢涉及到高阶以及具体应用方面。我是完全自学的 Python,所以很是明白自学对于一个人的考验,所以在这里我会尽我最大的努力,把 Python 尽可能简单的表述清楚,让更多想要学习 Python 的朋友能够入门。同时写这个教程也算是对自己之前所学知识的一个巩固和提高,喜欢的朋友们可以点个关注,有问题欢迎随时和我交流。本文所有的代码编写均是 Python3 版本。

在实际的操作中,字符编码是我们必然会遇到的一个“坑”,在我一开始的打算中我是不准备写这个知识点的,但是我怕朋友们在之后遇到的时候不知道是什么,而且它又是那么的重要,因为它不单单是计算机中的一个基础知识,而且还是一个有历史过程的事情。

编码

要讲字符编码,首先我们要从编码开始谈起。编码这个东西如果单说具体的定义的话可能很难理解,下面我用一个例子解释一下。

大家应该都看过战争片,一般要强攻的时候,长官下令冲锋,然后就有一个小兵拿起小喇叭吹冲锋号,这里其实就是一次编码,长官下达冲锋命令,小兵将这个命令编码为冲锋号“嘟嘟嘟嘟”的声音,然后声音在空气中传播,士兵们听到之后一般都会知道这是冲锋的意思,不会听成是打呼噜的声音,长官下达的命令你可能离着远了听不清啥意思,但是一听冲锋号吹起来,接受过训练的人就知道这是要冲锋的意思,不会理解错意思,这也是编码的优势所在。这里要说的是士兵接收到进攻命令,这叫做解码,解码完毕后士兵们明白了,然后才行动。

当然以上过程说的很简单,真实的编码和解码过程肯定比这个复杂的多,但是总的原理,其实就是这么个意思。

字符编码

编码我们说完了,那我们再来说说什么是字符编码。我们都知道计算机只能处理数字 (因为电是驱使计算机工作的基本,而电的特征就是高低电平,高电平是 1,低电平是 0),而我们编程的目的是为了让计算机给我们干活,从而实现我们的目的,而编程说白了就是一堆字符,所以一堆字符想要驱使计算机干活,而计算机又只能处理数字,所以说这里面涉及到一点,那就是从字符到数字的这么一个过程,这个过程其实就是一个字符如何对应一个特定数字的标准,这个标准就是字符编码。

字符编码的发展史

计算机的字符编码并不是一蹴而就的,而是有一个发展的过程。

1. ASCII 码

20 世纪 60 年代,计算机发明的早期,那时候美国是计算机领域的大哥,于是他们自己制定了一套字符编码,解决了英文和二进制间的对应关系,这个被称为 ASCII 码。

ASCII 码是基于拉丁字母的一套电脑编码系统,主要用于现代英语,因为英语用 128 个字符就够了,但是计算机又不单单只是英语系国家用,如果表示其他语言,128 个字符是远远不够的,于是其他的国家,都是在 ASCII 码的基础上,又发明了很多别的编码。

2. Unicode 码

在编码上,由于出现了很多不同的形式,于是就出现了 “乱码” ,比如互发邮件的双方,如果使用的编码方式不一样,那么收信人就只能看乱码了。于是 Unicode 应运而生,只看它的名字也应该知道,就是要统一符号的编码。

Unicode 对世界上绝大多数的文字系统进行了整理,编码,使得电脑可以用更为简单的方式来呈现和处理文字,它伴随着通用字符集的标准而发展,同时也以书本的形式对外发表。 Unicode 直到今天仍在不断的增修,每个新版本都加入了更多的字符,它涵盖的数据除了视觉上的字形,编码方法,标准的字符编码外,还包含了诸如大小写字母等的字符特性。它虽然这么能干,你也要保持清醒,它也不是完美的,仍需继续改进。

3. UTF - 8

UTF 就是 Unicode 的实现方式,而 UTF -8 是现在互联网上流传最广的 Unicode 实现方式,虽然它只是 Unicode 实现方式中的一种,但也隐约有武林盟主的地位。

UTF - 8 是一种针对 Unicode 的可变长度字符编码,也是一种前缀码,它可以用来表示 Unicode 标准中的任何字符,它也是现在电子邮件,网页以及其他存储或者发送文字的应用优先采用的编码。

所以,我们在以后的 Python 程序开发中,最好都要用 UTF - 8 编码。

Python 字符编码

在 Python3 中,所有的字符串都是 Unicode 字符串。

如果你想查看一下当前环境的编码格式,可以用 sys 中 的 getdefaultencoding() 函数查看。

代码语言:javascript
复制
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

因为 Python3 支持的是 Unicode,所以每个汉字都对应着一个编码数字,如果你想直到某个汉字对应的编码数字,可以用 ord() 函数,同样如果你想知道某个数字对应的汉字,可以用 chr() 函数。

代码语言:javascript
复制
>>> ord('李')
26446
>>> chr(26446)
'李'

最后在说一个函数 encode() ,这个函数能够将 Unicode 编码的字符串转化为其它编码,默认的是 UTF - 8,具体的应用如果有兴趣的话可以用 help(str.encode) 查看。

写在最后

感谢你能看到这里,希望我写的东西能够让你有到收获,但是我还是希望我在文章里插入的代码,你们能自己动手试一下,都很简单。原创不易,每一个字,每一个标点都是自己手敲的,每次基本都要花三四个小时的时间去做这件事,初心是为了分享,所以希望大家能多给点支持,该关注关注,该点赞点赞,该转发转发,有什么问题欢迎在后台联系我,也可以在公众号找到我的微信加我。

参考资料:

1. Python(字符编码)- Z贺 - 博客园。

2.廖雪峰的官方网站 Python 教程。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python空间 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档