情况描述
在做多语言文件处理时, 使用 pandas, 并且指定了encoding为 UTF-8, 在 IDE, Sublime等编辑器上查看都显示正常,使用Excel打开非英文字符, 例如汉字, 阿拉伯文, 希伯来文等显示乱码。
问题起因
Excel 对于非BOM (字节顺序标记)1 保存的CSV文件默认采取ASNI编码 23, pandas 默认的保存方式并没有在文件头加上 (0xEF
, 0xBB
, 0xBF
) or \ufeff
。
解决方案
如果只是想在Excel中正确打开乱码文件,可以不通过双击文件的方式打开文件, 而是新建一个空本Excel Worksheet, 在Excel中从菜单选项中选择 ‘Data’ -> ‘From csv/txt file’。
如果想从根源解决, 则在使用 pandas 保存文件的时候, 指定 encoding 为 utf_8_sig
而不是 utf_8
。 解决方法参考 Github 帖子