将二维数组保存在本地csv文件中时,打开发现中文乱码。记录下解决方法。
hList是我的一个二维数组,利用pandas可以将其保存在本地csv文件中
1 2 3
| import pandas as pd
data = pd.DataFrame(hList)
data.to_csv('data.csv') |
但是打开时发现中文全部保变成了乱码,应该是编码问题了。
解决的过程中尝试了在.to_csv时加 encoding="utf_8"或者gbk,还是乱码。
查资料发现必须要这个样子才能正确保存:
1 2 3
| import pandas as pd
data = pd.DataFrame(hList)
data.to_csv('data.csv',encoding="utf_8_sig") |

关于"utf_8_sig"与"utf-8" 的区别:
python中会有一个BOM("ByteOrder Mark") 用来声明该文件的编码信息,以\ufeff 的形式放在文件首行,但python会把它当作文本解析。
"utf-8" 是以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,因此它不需要BOM,所以当用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理, 就会发生错误。
"uft-8-sig"中sig全拼为 signature 也就是"带有签名的utf-8", 因此"utf-8-sig"读取带有BOM的"utf-8文件时"会把BOM单独处理,与文本内容隔离开。
(或许与这个原因有关吧)
就这样愉快地结束吧
撒花??ヽ(°▽°)ノ?