Python 简明教程 --- 9,Python 编码
目录 1,什么是计算机编码编码 @H_301_32@信息从一种形式@H_301_32@转换到另一种形式的过程,就叫做@H_301_32@编码。说白了,编码就是信息的一种转换过程。 比如,信息的@H_301_32@加密解密,这就是信息的一种转换过程,它是信息的明文与密文之间的转换过程。 还有不同国家文字的翻译,这是语言之间的一种转换过程。 那么,@H_301_32@编码也是一种信息的转换过程。 计算机编码 @H_301_32@计算机编码是信息的@H_301_32@人类可读形式与@H_301_32@计算机可读形式之间的一种转换过程。 实际上,计算机是一种人造的,很“@H_301_32@笨”的机器,它只认识@H_301_32@0和@H_301_32@1 这样的@H_301_32@二进制数据,也称为@H_301_32@机器码。
那么,计算机要想能够@H_301_32@存储/展现我们人类可读的,丰富多彩的信息(比如文字,图片,音频,视频等),这就涉及到了@H_301_32@计算机编码。 ASCII 码 @H_301_32@ASCII 码(美国信息交换标准码),是最早的,也是较为简单的一种计算机编码。其主要用于表示英文字符,数字和一些标点符号。 比如,二进制数字@H_301_32@01000001 (十进制为@H_301_32@65)就表示大写字母@H_301_32@A。 GB2312 @H_301_32@ASCII 码 虽能表示英文,但是无法表示其它语言,比如中文,韩文等。 为了表示中文,@H_301_32@中国国家标准总局发布了@H_301_32@GB2312(信息交换用汉字编码字符集),专门用于表示中文信息。 比如,十六进制@H_301_32@D6D0 表示汉字@H_301_32@中。 Unicode 码 世界上有很多的国家,每个国家都需要表示自己的文字,这就有了各种各样的计算机编码。每个国家都有自己的编码,这就不方便统一,也没有通用性。 为了统一不同国家的编码,表示不同国家的文字,诞生了@H_301_32@Unicode 码,俗称@H_301_32@万国码。@H_301_32@Unicode 码为每种语言中的每个字符设定了统一且唯一的二进制编码。 比如,十六进制@H_301_32@4E2D 表示汉字@H_301_32@中。 UTF8 @H_301_32@Unicode 码 实际上是一个@H_301_32@字符集,它只规定了@H_301_32@二进制与@H_301_32@各个字符之间的对应关系,并没有规定如何在磁盘上存储(用几个@H_301_32@字节来表示)。
@H_301_32@UTF32是@H_301_32@Unicode 码 的一种实现,一般用@H_301_32@4个字节表示一个字符,这样比较浪费存储空间。因为,一个英文字符只用@H_301_32@1 个字节就可表示,一个常用汉字用@H_301_32@2 个字节就可表示。 为了节省存储空间,@H_301_32@UTF8 一般用@H_301_32@1 到4 个字节表示一个字符,比如英文字符用@H_301_32@1 个字节,常用汉字用@H_301_32@2 个字节。
2,Python3 源文件编码在@H_301_32@Python2.x 中,Python 源代码文件默认以@H_301_32@ASCII 码格式编码。因此,在@H_301_32@Python2.x中,默认情况下,是不支持中文的。如果强制写中文,则会出现以下错误:
如果想在@H_301_32@Python2.x源代码文件中输入中文字符,可以使用@H_301_32@UTF8编码,需要在代码文件的开头添加:
或者:
在@H_301_32@Python3.x 中,Python 源代码文件会统一采用@H_301_32@Unicode 编码,默认以@H_301_32@UTF8格式编码,就不需要在代码开头添加上面的代码。 3,Python3 字符串与编码@H_301_32@str 类型 上一节介绍了Python 字符串的相关操作,这里我们介绍一下Python 字符串与编码。 @H_301_32@Python3 中的@H_301_32@字符串类型@H_301_32@<class 'str'>统一采用@H_301_32@Unicode 编码,因此支持多种语言。
@H_301_32@bytes 类型 当@H_301_32@str 类型需要@H_301_32@磁盘存储或者@H_301_32@网络传输时,就需要转换为@H_301_32@bytes 类型。 @H_301_32@bytes 是一个二进制类型,它需要在@H_301_32@str 之前加上@H_301_32@b:
@H_301_32@bytes 中只能包含@H_301_32@ASCII 字符,若有非@H_301_32@ASCII 字符,则会报错:
@H_301_32@str 转为 @H_301_32@bytes @H_301_32@str 类型转换为@H_301_32@bytes 类型,需要使用@H_301_32@str 中的@H_301_32@encode 方法,参数@H_301_32@utf8 是编码格式:
@H_301_32@bytes 转为 @H_301_32@str @H_301_32@bytes 类型转换为@H_301_32@str 类型,需要使用@H_301_32@bytes 中的@H_301_32@decode 方法,参数@H_301_32@utf8 是编码格式:
@H_301_32@str 与@H_301_32@Unicode 互转 将@H_301_32@str 转换为@H_301_32@Unicode:
将@H_301_32@Unicode 转换为@H_301_32@str:
@H_927_404@4,@H_301_32@ord() 与 @H_301_32@chr()
@H_301_32@ord() 函数用于获取一个字符的十进制整数表示,@H_301_32@chr() 是 @H_301_32@ord() 的反操作:
(完。) 推荐阅读: Python 简明教程 --- 4,Python 变量与基本数据类型 Python 简明教程 --- 5,Python 表达式与运算符 Python 简明教程 --- 6,Python 控制流 Python 简明教程 --- 7,Python 字符串 Python 简明教程 --- 8,Python 字符串函数 欢迎关注作者公众号,获取更多技术干货。 (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |