ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

字符编码与文件处理

2021-11-10 15:34:23  阅读:165  来源: 互联网

标签:编码 英文 文件 unicode 字符 open


字符编码

  只跟文本文件和字符串相关,与视频文件、图片文件、音频文件等无关

  1、什么是字符编码

    由于计算机内部只识别二进制,但是用户在使用计算机的时候确可以看到各式各样的语言字符。

    字符编码:内部记录了人类字符与数字对应关系的数据

  2、字符编码的发展史

    2.1、阶段一:一家独大

      现在计算机起源于美国,所以最先考虑的仅仅是让计算机识别英文字符,,于是诞生了ASCII表

      ASCII表里面记录了英文字符于数字的对应关系;一个英文字符对应一个字节,1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有的英文字符

 

     2.2、阶段二:群雄割据

      为了让计算机能够识别中文和英文,中国人制定了GBK

# GBK表的特点:
    1、只有中文字符、英文字符与数字的一一对应关系
    2、一个英文字符对应1Bytes
       一个中文字符对应2Bytes   
       补充说明:
       1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符
       2Bytes=16bit,16bit最多包含65536个数字,可以对应65536个字符,足够表示所有中文字符

      每个国家为了让计算机能够识别自己国家的字符外加英文字符,各个国家都制定了自己的字符编码表

# Shift_JIS表的特点:
    1、只有日文字符、英文字符与数字的一一对应关系
 
# Euc-kr表的特点:
    1、只有韩文字符、英文字符与数字的一一对应关系

    2.3、天下一统

      为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一。

      1994年发布了unicode(万国码)。统一使用两个及以上字符记录字符与数字的对应关系

      由于unicode固定使用两个字节来存储一个字符,如果多国字符中包含大量的英文字符时,使用unicode格式存放会额外占用一倍空间(英文字符其实只需要用一个字节存放即可),然而空间占用并不是最致命的问题,最致命地是当我们由内存写入硬盘时会额外耗费一倍的时间,所以将内存中的unicode二进制写入硬盘或者基于网络传输时必须将其转换成一种精简的格式,这种格式即UTF-8(全称Unicode Transformation Format,即unicode的转换格式)

      内存中使用unicode,硬盘使用UTF-8

# 多国字符—√—》内存(unicode格式的二进制)——√—》硬盘(utf-8格式的二进制)

  3、字符编码实操

    3.1、如何解决文件乱码的情况

      文件当初用什么编码编写的,打开的时候就用什么编码打开

    3.2、python解释器版本不同带来的编码差异

      在python2.x内部使用的编码默认是ASCII,,使用时需要在文件头加coding:utf8;并且在定义字符串前面加一个小u。

 

     在python3.x中内部使用utf8

    3.3、编码与解码

    编码:将人类能够读懂的字符按照指定的编码转换成数字

    解码:将数字按照指定的编码转换成人类能够读懂的字符

 

 

 

 文件操作

  1、什么是文件

    文件其实是操作系统暴漏给用户操作硬盘的快捷方式(接口)

  2、代码如何操作文件

    关键字:open()

    三步走:

      1、利用关键字open打开文件

      2、利用其他方式操作文件

      3、关闭文件

  3、路径

    相对路径:参考对象是根目录

    绝对路径:参考对象是当前目录

    路径中出现了字母与斜杠的组合产生了特殊含义时,只需要在路径字符前加一个r就可以了

# open('a.txt')
# open(r'D:\py\a.txt')

  4、open使用

    open(文件路径,读写模式,字符编码);其中文件路径与读写模式是必须的,字符编码是可选的,有些模式需要编码)

 

   with上下文件管理(能够自动帮你close())

 

  

  

标签:编码,英文,文件,unicode,字符,open
来源: https://www.cnblogs.com/zhaoyuanshi/p/15533698.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有