需要了解的Python编码解码知识
2021/4/16 12:27:32
本文主要是介绍需要了解的Python编码解码知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
编码的发展历史
最早的编码是美国发明的ASCII,ASCII编码占用1个字节,8个二进制位,最多能够表示2的8次方256个字符。随着计算机的发展,ASCII码已经不能满足世界人民的需求。因为世界各国语言繁多,字符远远超过256个。
中国为了处理汉字,设计了GBK(GB2312)编码,它用16个比特位表示一个中文字符,所能表示的汉子个数2的16次方减一65535个,基本上涵盖了我们常用的汉字。
Unicode编码,把所有语言都统一到一套编码里。Unicode规定字符最少使用2个字节表示,所以最少能够表示2的16次方=65536个字符。
UTF-8是对Unicode编码的压缩和优化,它不再要求最少使用2个字节,而是将所有的字符和符号进行分类:ASCII码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存。如果你要传输的文本包含大量英文字符,用UTF-8编码就能大大节省空间。
目前,内存中一般使用的字符编码是Unicode,硬盘中使用的字符编码是UTF-8。
如何理解编码与解码
从内存(文本信息字符串)存到磁盘(二进制字节数据)的过程,称为编码。
从磁盘(二进制字节数据)到内存(文本信息字符串)的过程的过程,称为解码。
在计算机内存中统一使用Unicode编码,当保存到硬盘或者需要传输时,就转换到UTF-8编码。
比如:用记事本编辑文本时,文件读取从磁盘的UTF-8字符被转换为Unicode字符到内存中,保存文件时,会把Unicode字符转换为UTF-8字符保存到磁盘中。
Python解释器执行代码的时候,需要把解释器和执行程序加载到内存中执行。
如何保证不乱码?
存的时候用什么编码,取的时候就用什么编码。
内存中编码都是Unicode,但是保存到硬盘中就要指定一个字符编码,而从硬盘中读取到内存就要用存取的编码,否则就会出现乱码。
Python中的默认编码
Python解释器也类似于一个文本编辑器,Python解释器也有自己默认的编码方式。
Python2.x默认ASCII码,python3.x默认的utf-8,可以通过如下方式查询:
查询默认编码方式
import sys print(sys.getdefaultencoding()) 输出 utf-8(python3环境) ascii(python2环境)
如果不想使用默认的解释器编码,需要用户在文件开头进行声明
如果在python2解释器去执行一个utf-8编码的文件,就会以默认的ASCII去解码utf-8,一旦程序中有中文,自然就解码错误了,所以我们在文件开头位置声明 #coding:utf-8,其实就是告诉解释器,你不要以默认的编码方式去解码这个文件,而是以utf-8来解码。
Python3的解释器默认utf-8编码,已经不需要添加这一行声明了。
这篇关于需要了解的Python编码解码知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门