字符编码与文件处理
字符编码
字符编码的定义
字符编码指记录了数字与人类语言对应关系的数据。使用字符编码将人类的使用的字符和计算机能识别的数字进行相互转化。只跟字符串和文本文件有关,和其他类型的文件无关。
字符编码发展史
1.最初阶段
最初的计算机是由美国人发明的,美国人为了能够让计算机识别英文字符而发明了ASCII码。
ASCII码用数字与英文的字符一一对应,用一个字节来对应关系。
另外,所有的英文字符相加不超过127个,7位二进制数其实也够,为了后续发展而选择了8位二进制数。
2.发展阶段
在计算机的不断发展后,不使用英语而是使用其他语言的人,也需要让计算机能识别自己的语言,因此需要新的字符编码。例如中国人就发明了能让计算机识别中文的编码GBK码。
GBK码记录了英文中文与数字的对应关系,英文还是使用一个字节,中文则使用两个甚至更多字节 。
同样的,日本人发明了记录日文英文与数字的对应关系的编码表shift_JIS码;
韩国人发明了记录韩文英文与数字的对应关系的编码Euc_kr码。
3.当前阶段
由于各个国家都使用自己的编码,在国家之间的文本数据交流就会造成混乱。为了能够实现不同国家之间的文本数据能够彼此无障碍交流,就需要对编码进行统一。因此出现了Unicode(万国码)。
Unicode的特点是统一使用两个及以上字符记录字符与数字的对应关系。但在使用英文字符时就多花了一倍的时间,因此就出现了当前主流使用的utf8(万国码的优化版本)。
utf8的特点是将英文还是用一个字节存储将中文使用三个字节或更多字节存储。
字符编码实操
1.解决文件乱码
文件当初以什么编码编的 打开的时候就以什么编码解。
2.python解释器不同版本带来的编码差异
python解释器2.x版本使用的是ASKII编码,因此字符串在定义非英文字符时会报错。
为解决这个问题,需要加文件头coding:utf8,并在定义字符串钱加一个小u。
3.解码与编码
编码指将人类能理解的字符按照指定的编码转换成数字。
解码指将数字按照指定的编码转换成人类能理解的字符。
在python中可以用encode方法将字符编码,用decode方法解码。
文件操作
1.文件的定义
文件其实是操作系统暴露给用户操作硬盘的快捷方式(接口)
2.代码如何操作文件
首先利用关键字open打开文件,然后再用其他方法操作文件,最后需要关闭文件。
open关键词格式(‘文件路径’,‘读写模式’,‘字符编码’)。
注意,如果文件路径中出现斜杠与字母组合有特殊含义是需要在字符串前加个r。
除此之外也可以使用with语法,好处是可以自动关闭。
文件读写模式
只读模式
只读模式意为只能读不能写。当路径存在时就读取文件内容,不存在会直接报错。
只写模式
只写模式意为只能写不能读。
只写模式当路径存在时打开会清空文件原有内容再写入,当文件不存在时会创建文件。
只追加模式
只追加模式与只写模式类似,在路径不存在时会创建文件,但他不会把文件清空,而是将内容接在后面。
结果如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通