起因
今天在处理工作时,需要将结果从hive读出,并保存为csv格式,然后下载。可以下载后用excel打开发现出现乱码,非我想要的。
解决方案
参考了https://blog.csdn.net/zhuzuwei/article/details/80890007的博文,在此表示感谢。
我们看下pandas官网对参数encoding 的解释,默认为utf-8,就是说 在我们不给指定时,就已经默认选择了utf-8编码格式。
这里我使用的是代码格式为utf_8_sig
代码语言:javascript复制df.to_csv("data.csv",encoding="utf_8_sig")
比较utf-8与utf_8_sig的差异
- utf-8 utf-8 是以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,因此它不需要BOM,所以当用utf-8编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理
- uft-8-sig uft-8-sig中sig全拼为 signature 也就是"带有签名的utf-8”,因此"utf-8-sig"读取带有BOM的"utf-8文件时"会把BOM单独处理,与文本内容隔离开
此处待完善和进一步理解。