python编码介绍
常用字符编码
ASCII 编码
由于计算机是美国人发明的,因此,最早只有 127 个字母被编码到计算机中,也就是大小写英文字母、数字、标点符号和一些控制符号,这个编码表被称为 ASCII编码。
GBK2312
简体中文的字符编码,2B(字节)代表一个字符。要处理中文显然 1B 是不够的,至少需要 2B,而且还不能和 ASCII 编码冲突,所以,中国制定了 GBK2312 编码,用来把中文编进去。
GBK
GB2312 的扩展,除了兼容 GB2312 外,它还能显示繁体中文及日文的假名。
Unicode
国际组织制定的可以容纳世界上所有文字和符号的字符编码方案,统一用 2B代表一个字符。UTF-8、UTF-16、UTF-32 都是将数字转换到程序数据的编码方案。
UTF-8
对 Unicode 编码的压缩和优化,它不再要求最少使用 2B,而是将所有的字符和符号进行分类。例如,ASCII 码中的内容用 1B 保存,欧洲的字符用 2B 保存,东亚地区的字符用 3B 保存。
内存中使用的编码是 Unicode(程序都需要加载到内存才能运行,所以内存要求尽可能地保证快);
硬盘中或者网络传输用 UTF-8(网络 I/O 延迟或磁盘 I/O 延迟要远大于 UTF-8 的转换延迟,而且 I/O 要求尽可能地节省带宽,以保证数据传输的稳定性)
Python 3 的数据默认编码是 Unicode,代码默认使用 UTF-8。如果编辑器的编码设置和代码的实际编码不一致,有可能导致乱码。例如,Notepad++的默认编码是 UTF-8,而 Windows
的默认编码是 ANSI,ANSI 编码实际上是操作系统在不同语言版本下的编码,在简体中文版中,ANSI 是 GB2132,而在繁体中文版中是 BIG5 编码。所以,应确保编辑器和代码内容具有相同的编码设置。
外部数据编码
因为有默认编码,所以在源代码中创建的对象也具有相同的编码。但有时候我们会从外部获取数据,例如,从文件中读取文本,或者从网络上接收一个数据包,这就有可能获取具有不同编码的字符串。 为了正确地读出数据,必须将这些字符串解码为 Unicode,然后再将其编码为所用平台所支持的编码。
str = "我爱你祖国.mp3".encode('gbk') # 创建用gbk编码的字符串 str_unicode= str.decode('gbk') # 对gbk编码进行解码后为 Unicode print(str_gbk)
执行结果如下
我爱你祖国.mp3
网上的数据大多数的编码为UTF-8,GBK这两种.
感谢大家的支持,关注,评论,点赞!