字符编码
字符编码
编码:字符编码表
字符---------------------------------------->数字
解码:字符编码表
数字<----------------------------------------编码
1、字符编码表
在计算机发展之初,只使用一种字符编码表,那就是美国制定给自己使用的ascii表。ASCII表里面的每一个字符由八位二进制数字表现,总共能记录255个字符,完整的记录了英文字符、数字以及一些特殊符号。
ASCII:只认识英文字符
1英文字符对应8bit
8bit = 1Byte 1024Byte = 1Kb
后来计算机传入中国,最先一批的计算机使用者为了能让计算机更好的普及全国,指定了能够编译中文汉字以及英文数字的编码表,GBK编码表,每一个字符都由2个字节、16个二进制数表示,总共能记录65535个字符。
gbk:支持中文及英文字符
1个字符对应16bit
其他国家也不愿示弱,也各自指定了只有包括自己本国字符的编码表。
shift-JIS:支持中文及英文字符
EUC-KR:支持韩文及英文字符
但由此以来,计算机的发展以及使用会受到很大的限制,比如我们使用美国的电脑启动我们本国编写的程序,就会出现乱码,因为ASCII表并没有记录任何的中文字符,所以为了传播以及进步,制定了包含了万国字符的字符表,unicode表。
unicode:支持万国字符
常用字符,一个字节对应两个字节
历史使命
1、兼容万国字符
除了兼容万国字符这一使命以外,还有兼容老的字符编码表,在各国最初是的数据里,并不是使用unicide这个编码表编码的,如果说直接将以前的重要数据清除了也不合适,所以选择一种平缓的方式来过度这个阶段,现在,绝大多数的文件存储方式都是以unicode为基础的。
2、兼容老的字符编码表
utf-8:把unicode进行了优化
1个英文字符--->1个字节
1个中文字符--->3个字节
保证不乱码
1、首先得保证不乱吗,如何保证???
存内存不用管,因为内存固定使用unicode格式
存入硬盘的编码格式统一改为utf-8
2、如何保证取乱码
编码与解码取同一章表
python3解释器默认读文件的编码格式为utf-8
python2解释器默认读文件的编码格式为ascii
文件操作的所有方法
控制文件指针移动
我们使用with open() as f:是被动的让指针进行移动。
主动控制文件指针移动
0模式 f.seek(3,0)
参照文件开头移动3个字节
1模式 f.seek(3,1)
参照当前所在的位置移动3个字节
2模式 f.seek(-3,2)
参照文件末尾移动3个字节
### 只有0模式可以在t模式下使用,其他的只能在b模式下使用
### 还有一种较为特殊的,那就是t模式可以是用seek(0,2)因为指针指向文件末尾没有移动,所以不会出现问题,但如果只要进行任何的移动,都会出现程序错误。
文件修改的两种方式
方式一:
1、将文件内容一次性全部读入内存
2、在内存中将内容修改完毕
3、将新内容写回原文件
方式二、
1、以读的方式打开源文件,以写的方式打开一个临时文件
2、从源文件中读取一行内容存入内存,修改完毕存入临时文件,循环反复直到读完源文件
3、删除源文件,将临时文件改为源文件名
命名规范
浙公网安备 33010602011771号