问题现象
从网上爬取的数据用append的方式存储到CSV文件中,过几天用Excel打开之后发现乱码,仔细查看,中文都是乱码,其他没问题
问题分析
初步分析应该是在爬取或写入的时候出现了编码问题;
先查看网页源代码:
在目标网页按F12,打开开发者工具,,然后在在console控制台输入document.charset 然后回车,结果是UTF8,并没有错误
然后看源代码,都没有问题
然后看CSV文件的编码:
用文本文件打开CSV文件,右下角就显示当前文件的编码。结果发现CSV文件的编码是“带有BOM的UTF”,上网查得:Byte Order Mark,字节顺序标记,一种文件头部协议,存储在文件头部,用于标识文件编码。
仔细回想发现,最初的空白CSV文件是由Excel另存为获得的,推测在另存为的过程中添加了BOM
那么下面面临两个问题:
1、如何避免这类问题再次发生。
方法很简答,用一个不带BOM的CSV文件存储爬取的数据即可:找了一个正常可以读取的CSV文件,用记事本打开,另存为CSV文件,后续再写入数据的时候直接写入这个新的CSV文件就行了。
2、原来的CSV文件中的数据怎么复制出来。
初步想法是复制出来,但在Excel中直接打开也不行、使用导入CSV文件的功能并尝试了各种编码,也不行,都是乱码。上网找其他的文本编辑器,发现多数推荐sublime、notepad,使用sublime打开,发现sublime提供了“设置文件编码”的功能(其实这个没用&#x