字符编码

python解释器在加载.py文件中的代码时,会对内容进行编码(默认ASCII)

ASCII(美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用8位来表示(一个字节,等于8个比特(bit)),即:2**8 = 256-1,所以,ASCII码最多只能表示255个符号。

为了处理汉字,程序员设计了用于简体中文的GB2312(7445个字符)和用于繁体中文的big5。

GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉子区和图形符号区。汉字区包括21003个字符。

2000年的GB18030是取代GBK1.0的正式国家标准,该标准收录了27484个汉字,同时还收录了一些少数民族的文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不做要求。所以手机,MP3一般只支持GB2312.

由于ASCII码无法将世界上的各种文字和符号全部显示,所以,Unicode就诞生了。

Unicode(统一码、万国码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由16位来表示(2个字节),即:2**16 = 65536。

UTF-8,是对Unicode编码的压缩和优化,它不再使用最少2个字节,而是将所有的字符和符号进行分类:ASCII码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存......

字符编码转换

python2跟python3的区别是:

1.python2默认编码是ASCII,python3是Unicode

2.python3在转换的时候还转为二进制类型(bytes)

解码会decode成Unicode,解码时需指定之前的编码;

编码encode指定目标编码。

原文地址:https://www.cnblogs.com/allenzhang-920/p/8353461.html