字符编码
什么是字符编码
字符编码表:人类的字符相对应的数字,二进制。
ASCII码:只能识别英文字符,1英文字符为1=8bit。(用8个二进制bit(比特位)位表示一个英文字符)
GBK:只能识别汉字与英文,1汉字=16bit(Shift_JIS日本字符编码)(Euc_kr韩国字符编码)
Unicode:能识别万国字符,1字符=16bit=2Bytes。
utf-8:是Unicode的转换格式,1个英文字符=1Bytes 1汉字=3Bytes。
重点理论:
1.编码与解码:
字符----编码---->unicode的二进制----编码---->GBK的二进制
GBK的二进制----解码---->unicode的二进制----解码---->字符
2.解决乱码问题的核心法则:
字符用什么编码格式编码,就应该用什么编码格式进行解码。
3.python解释器默认的字符编码:
python2为ASCII,python3为UTF-8。(可以通过更改python解释器默认使用的字符编码,在文件首行利用“ #coding:文件所需字符编码 ”。)
在python2中可以在字符串前加上u,来让其存成unicode,python3则默认为此。
关于字符编码的操作:
1.编写python文件,首行应添加文件头。
2.用python2写程序,定义字符串时,应加前缀u。
3.python3中的字符串都是unicode编码的,python3的字符串encode之后可以得到bytes类型。
为何字符要编码
人类与计算机打交道用的是人的字符,而计算机无法识别人的字符,只能识别二进制,所以必须将人类的字符编码编译成计算机能识别的二进制数。
如何用字符编码
编写时,首行输入文件头,输入输出时已UTF-8为编码类型。
文件处理
什么是文件处理
文件是操作系统提供给用户/应用程序的一种虚拟单位,该虚拟单位直接映射的是硬盘空间。
为何要处理文件
用户/应用程序直接操作文件(读/写)就被系统转换成具体的硬盘操作,从而实现用户/应用程序将内存中的数据永久保存到磁盘中。
如何用文件
文件处理的三个步骤:
文件对象(应用程序的内存资源)对应操作系统打开的文件(操作系统的内存资源)
读取文件中的数据
向操作系统发送信号,让操作系统关闭打开的文件,从未回收操作系统的资源。
文件打开模式:r(默认的,只读文件,在文件不存在时则报错,如果文件存在则文件指针跳到文件的开头)、w、a
操作文件内容的模式:t(默认的,操作文件内容都是以字符串为单位,会自动帮我们解码,必须指定encoding参数)
b(操作文件内容都是以Bytes(二进制)为单位,硬盘中存的时什么就取出什么,一定不能指定encoding参数)
+
总结:t模式只适用于文本文件,而b模式可以用于任意文件。
with的使用:上下文管理(读写文件操作):with open(r'c.txt',mode='r',encoding='utf-8') as f,open(r'b.txt',mode='r',encoding='utf-8') as f1:
循环读文件内容的方法:with open(r'c.txt',mode='rt',encoding='utf-8') as f:
for line in f:
print(line,end='')