字符编码

字符编码

      编码:字符编码表

  字符---------------------------------------->数字

      解码:字符编码表

  数字<----------------------------------------编码

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、删除源文件,将临时文件改为源文件名

      命名规范 .源文件名.txt.swp

posted @ 2021-03-24 20:26  ╰╮  阅读(92)  评论(0)    收藏  举报