字符编码
什么是字符编码
字符编码就是将人类的字符与计算机二进制数字之间的一一对应关系。
目前有的字符编码表主要有:
ASCII码表:是英文字符数字与计算机二进制之间的对应关系 一个英文字符 占一个字节(bytes)8个bit
Unicode(万国编码):是目前计算机内存的字符编码表,包含了所有国家字符与计算机二进制数字之间的对应关系。一个英文字符占一个字节(1ytes=8bit)一个中文字符占2个字节(2bytes=16bit)
Utf-8:在硬盘中,可以识别所有国家的字符并将其以utf-8的编码格式储存。注意:utf-8也只是一种编码格式,并不能识别其他编码表编码出来的计算机二进制数字。
GBK:用16位二进制数字组成 一个中文字符相当于2个字节。一个英文字符相当于一个字节
shift-jis:
Euc-kr:
为何会出现乱码(保证同存同取)
出现乱码最主要的原因就是存取文件时所用的字符编码表不一致。所以出现乱码主要有以下三种情况:
存乱了:在存文件时将A国的字符用B国的字符编码表进行与计算机二进制之间的转换,B国的编码表不认识A国的字符,找不到与计算机二进制之间的对应关系,只能出现报错或者乱存,一般都会选择乱存,所以当文件出现存乱了的情况时,没有方法补救。
解决方法:只能预防,在存文件时选择Utf-8编码格式进行存取
取乱了:在读取文件时,没有选择文件存时的字符编码格式 读取,读文件的编码格式并不认识文件中的二进制编码,所以会出现乱码。
解决方法:必须知道该文件是以什么编码格式存的,不然无法正常打开文件(同存同取)
在程序运行时也会出现乱码:为保证在程序运行的前2个阶段不乱码,在文件开头加上#coding=‘文件是以什么编码格式存的‘
第三种:现在没怎么理解不会表达
什么是编码与解码?
编码:由字符串转换成内存中的Unicode的过程,或由Unicode转换成其他编码的过程 encode
解码:由Unicode转换成字符串的过程,或由其他编码转换成unico的过程 decode
注意:内存会将unico编码的字符串二进制直接解码成字符串,而其他编码格式的字符串二进制,则不会将其解码成字符串打印出来,除非将其转换成Unicode的字符串二进制,才会将其解码成字符串打印出来,否则打印出来是一堆二进制数字。
文件处理
文件是操作系统给我们的一个虚拟概念
为何要用文件? 存取硬盘必须要用文件存取
当我们打开一个文件,就获得了一个文件对象/文件句柄======》相当于一个遥控器
当我们想对文件进行操作时只要控制文件对象/文件句柄,向操作系统发送命令,操作系统再控制硬盘完成我们想要进行的操作。
目前对文件进行操作的方式主要有 r w a
r:读操作
w:写操作
a:追加写操作
打开文件的模式主要有 t b ,不能单独使用必须与r w a 联合使用。
t 主要是打开文本文件,需要指定文件路径,文件操作方式,文件解码方式 一般为 encoding=’utf-8' 在读取文件时会自动解码成字符串显示出来。
b模式可以操作任意文件类型,也需要指定文件路径,文件操作路径,但是由于只有字符串才有编码表,所以b模式打开的文件不需要指定解码方式,直接将文件内的二进制读取到内存,并且Unicode也无法识别,只能将取出来的二进制数字发送给用户。