Excel 在读取 csv 的时候是通过读取文件头上的 bom 来识别编码的,这导致如果我们生成 csv 文件的平台输出无 bom 头编码的 csv 文件(例如 utf-8 ,在标准中默认是可以没有 bom 头的),Excel 只能自动按照默认编码读取,不一致就会出现乱码问题了。

掌握了这点相信乱码已经无法阻挡我们前进的步伐了:只需将不带 bom 头编码的 csv 文件,用文本编辑器(工具随意,推荐 notepad++ )打开并转换为带 bom 的编码形式(具体编码方式随意),问题解决。

当然,如果你是像我一样的码农哥哥,在生成 csv 文件的时候写入 bom 头更直接点,用户会感谢你的。

附录:

对于 utf-8 编码,unicode 标准中是没有 bom 定义的,微软在自己的 utf-8 格式的文本文件之前加上了EF BB BF三个字节作为识别此编码的 bom 头,这也解释了为啥大部分乱码都是 utf-8 编码导致的原因

作者:猴子
链接:https://www.zhihu.com/question/21869078/answer/421152015
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

下面分别说下windows和mac上的乱码解决办法。

  • windows 上excel打开乱码解决办法

方法一:

1)window系统,下载个notepad++软件

2)选中csv文件,鼠标右击,选中用上面下载的这个软件打开

3)按下图设置下编码“转为UTF-8编码”

4)按下图点击保存

5)上面设置好编程以后,再用Excel打开csv文件就可以了。

上面方法来自 @日求三餐一脚踏进数据分析(从零开始学习数据分析)

方法二:

1)先正常打开一份空白的excel文件,将鼠标定位在第一行第一列,这边鼠标定位的位置将决定后续打开的csv文件在excel中展示的位置。

2)在excel的上方菜单中点击数据,如上个步骤截图中标红的数据,页面切换后,点击下图中标红的“自文本”。

3)在弹出的对话框中找到刚刚显示乱码的csv文件,点击“导入”按钮。

4)在打开的对话框中选中“分隔符号”,在“文件原始格式”中编码选择UTF-8,如下截图中标红所示。设置好之后请点击“下一步”。

5)在跳转后的当前页中“分隔符号”处请勾选“逗号”,去掉“Tab键”前的勾选符号。

6)点击“下一步”就可以预览效果了,,这时候再点击“完成”页面就跳转到如下图2所示的对话框,提示导入的数据的放置位置。

  • mac 上的excel乱码解决办法

如果excel是中文版本,参考这个:Office for Mac 打开 Excel 文件全是乱码,原因和解决办法是什么?

如果excel是英文版本,按下面的方法: