Python3 - 字符编码

Posted lipandeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 - 字符编码相关的知识,希望对你有一定的参考价值。

计算机采用 8 bit(比特,计算机最小表示单位) = 1 byte(字节,计算机最小存储单位),一个字节能表示的最大的整数就是 255(二进制11111111 = 十进制255),如果要表示更大的整数,就必须用更多的字节,比如两个字节可以表示的最大整数是 65535 。

ASCII (8位)编码包括大小写英文字母、数字和特殊字符,总共256(255+数字0,一共256)个。

中文编码格式的发展历程是在 ASCII 的基础之上经历了 GB2312(7K+)、GBK1.0(2W+)和 GB18030(27W+)。

Unicode (16位)把所有语言都统一到一套编码里,解决了乱码的问题,但造成了存储空间和网络传输的浪费,因此 Unicode 转化成了可变长编码的 UTF-8 编码。Python3 源码文件默认使用 UTF-8 编码,可以正常解析中文,无需指定 UTF-8 编码。

ASCII编码 GBK编码 Unicode编码 UTF-8编码
英文 1btye 1btye 2byte 1byte
中文 N/A 2byte 2byte 3byte

Python2 中默认的编码格式是 ASCII,因此需要指定字符编码才能支持中文。字符串默认也是 ASCII ,如果代码文件头声明了其它编码格式(如 GBK),那字符串就使用声明的编码格式,在内存中不会自动转成 Unicode。

Python3 中默认的编码格式是 UTF-8。字符串的编码格式是 Unicode,即使代码文件头声明了其它编码格式,在内存中也会转换为 Unicode。

Windows 系统中文版默认编码是 GBK,Linux 系统默认编码是 UTF-8。

# Python2指明编码格式:
# -*- coding:utf-8 -*-

计算机系统通用的字符编码工作方式:
在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要网络传输的时候,就转换为 UTF-8 编码。无论以什么编码在内存中显示字符,最终保存到硬盘上都是二进制(不同编码转成的二进制不同)。存储和读取的编码必须都要保持一致。

ASCII 转二进制的过程
把字符串拆分成单个字符,对照 ASCII 表把单个字符转成十进制,再把十进制转成二进制,每个字符最终转换成二进制后都是由 8 位的规则来组成的,不足 8 位的在二进制的左边补零从而成 8 位。

ASCII转二进制
ASCII码十进制二进制
Python 80 121 116 104 111 11001010000 01111001 01110100 01101000 01101111 01101110

技术图片

以上是关于Python3 - 字符编码的主要内容,如果未能解决你的问题,请参考以下文章

Python3之字符编码

Python2和Python3中的字符串编码问题解决

一篇文章助你理解Python3中字符串编码问题

python3字符串编码转换

四.python3 字符编码

python3随记——字符编码