Python中读取与写入文件时的编码方式

《Python中文件的读取》《Python中文件的写入》中提到通过文件对象调用read()函数和write()函数实现文件的读写。以上方法能够正确地取或写入英文时,当要读写的内容是中文时,则需要考虑编码方式。

1 读取已经存在的数据

1.1 创建文件

创建一个txt文件,在该文件中输入中文内容“你好世界”,可以看到该文件的编码方式是“UTF-8”,如图1所示。

图1 新建txt文件

相关链接1 UTF-8编码,是Unicode Transformation Format即可变长字符编码的简称,使用UTF-8编码,英文字母用一个字节表示,中文汉字用三个字节表示。“你好世界”这四个中文汉字的UTF-8编码如图2所示。

图2 “你好世界”的UTF-8编码

1.2 读取文件

1.2.1 未指定编码方式

使用图3所示的代码读取文件。

图3 未指定编码方式读取文件的代码

此时,open()函数没有指定使用何种编码方式读取文件,因此打印出来的内容是乱码。

1.2.2 指定编码方式

open()函数的encoding参数指定了以何种编码方式读取文件,代码图4所示。

图4 指定编码方式读取文件的代码

以上代码中,使用了“UTF-8”编码方式读取文件内容,此时的输出是“你好世界”。

2 读取Python代码写入的数据

在读取Python代码写入的数据时,应使用与写入时使用的相同编码方式。例如,在写入时使用“gbk”方式,那么在读取时必须也要使用“gbk”方式,而不能使用“UTF-8”的方式。

相关链接2 GBK编码,Chinese Internal Code Specification即汉字内码扩展规范的简称,其中K是汉语“扩展”的拼音“KuoZhan的简写。无论英文字母还是中文汉字,都是用两个字节表示,如图5所示。

图5 “你好世界”的GBK编码

2.1 使用指定方式写入数据

使用“GBK”编码方式向data.txt文件中写入“你好世界”,代码如图6所示。

图6 指定编码方式向文件中写入数据的代码

打开data.txt,此时可以看到该文件的编码方式是“ANSI”,如图7所示。

图7 使用Python代码写入的txt文件

相关链接3 ANSI编码,是American National Standards Institute即美国国家学会标准的简写,在简体中文的操作系统中,ANSI编码代表的就是GBK编码。

2.2 使用相同的编码方式读取文件

读取文件的代码如图8所示。

图8 使用相同的编码方式读取文件

如果读取时使用的编码方式与写入时不同,则无法正确读取数据,如图9所示。

图9 使用不同的编码方式读取文件

猜你喜欢

转载自blog.csdn.net/hou09tian/article/details/131585420