🎈问题描述

有问题的代码:
from urllib.request import urlopen

url = "http://www.baidu.com"
resp = urlopen(url)

resp_1 = resp.read().decode("UTF-8")

with open("mybaidu.html", mode="w") as f:
    f.write(resp_1)
print("over!")
问题代码运行后,文件中的内容:

python写入文件后中文乱码_Python

运行乱码的mybaidu.html,如图:

python写入文件后中文乱码_中文乱码_02


🎈解决方法

关键点①:确定是哪一步导致了问题

关键点②:修改Python打开文件的编码(encoding="utf-8")

正确的代码:
from urllib.request import urlopen

url = "http://www.baidu.com"
resp = urlopen(url)

resp_1 = resp.read().decode("UTF-8")

with open("mybaidu.html", mode="w", encoding="utf-8") as f:
    f.write(resp_1)
print("over!")
正确代码运行后,文件中的内容:

python写入文件后中文乱码_写入文件_03

运行正确的mybaidu.html,如图:

python写入文件后中文乱码_中文乱码_04

🎈探索过程

关键点①:确定是哪一步出现的问题

关键点②:修改Python打开文件的编码(encoding="utf-8")

1、尝试修改编码方式,gbk、UTF-8、GB312等常用的几个都尝试了,不管用;

2、直接将未写入文件之前的内容打印出来时,发现此时中文正常显示

这就说明是‘写入’这个环节或‘写入之后的步骤’有问题

3、搜索关键词“爬虫写入文件后中文乱码”,事实证明,站在大佬们的肩膀上看世界是很有效率的!!!

🎈参考文章

1、python 爬虫写入文件中文乱码问题解决https://blog.csdn.net/helloexp/article/details/95757243