当我运行如下简单的代码,竟然出现这种问题:
with open("my02.txt","w") as f:
f.write("我爱中国")
乱码是由于编码与解码不一致造成的。
思考过后,这次是把中文写进了文件,与以往不同,还得考虑计算机的编码,我是windows系统,调用cmd命令查询windows操作系统默认编码:
活动代码页为:936,所以它对应的编码格式为GBK。
当我用open()时,调用的时操作系统打开的文件,默认编码是GBK。(linux操作系统默认编码是utf-8,故不会出现乱码)。
python解释器执行open(“my02.txt”,“w”)时,调用操作系统程序,其中python默认编码是utf-8,操作系统编码是gbk。
数据会转化为gbk写入文件,即my02.txt的编码是gbk。打开文件也必须拿gbk打开,否则会造成乱码。
解决方法
1.编译器自带功能
点击右方的reload gbk即可。
2.写文件的时候就采用utf-8的编码
with open("my02.txt","w",encoding="utf-8") as f:
f.write("我爱中国")
告诉操作系统my02.txt的编码是utf-8。