最近网友抱怨,收到别人发来的数据表,打开后长这样:
CSV再EXCEL中显示为乱码
除了数字,其他是啥玩意儿
完全乱码。。。
(乱码!乱马!乱吗?乱!)
但是当使用记事本打开,检查确认是否文件有问题时,显示完全正常,根本没有乱码。
CSV在记事本中显示正常
用最最普通记事本打开文件能够正常显示,用Excel打开却显示不正常。。。
这是怎么回事?(乱马也在想...)
难道没安装好需要卸载重装?(走投无路的招数,然并卵)
No~No~No
实际上是由于文件编码与Excel编码不一致造成。
查看csv文件的编码:
CSV文件的编码
使用记事本打开csv文件,点击另存为,在最下面一行的编码默认显示,就是此文件的编码。
而Excel的默认编码目前没有定论,官方也没有给出任何解释说明。
但众多猜测集中在两种:或是Unicode或是ANSI。
一边是编码UTF-8,另一边是Unicode/ANSI,两者不一致。
无论哪一种都是由于Excel与CSV文件的编码不一致,因此才出现文章开头的情况。
了解了原理,那么如何解决乱码问题呢?以上可知,乱码是由于两方编码不对称。
而此操作只涉及到原文件和Excel两方的编码。
因此,解决方向也是两个:要么修改原文件编码,要么修改excel编码。
方法一:修改原文件的编码
将原文件的编码修改为ANSI,这样与Excel默认保持一致,使用Excel打开时可以正常显示
第一步,使用记事本打开csv原文件
第二步,进行文件另存的操作
名字无需改动,而是要改动编码类型,由原来的"UTF-8"改为"ANSI",与excel默认编码保持一致。
现在试一试用Excel打开此文件,乱码就不见了,数据正常显示(O(∩_∩)O~~)
方法二:将文件导入到Excel中,调整编码为可识别格式
第一步,选择导入文件
第二步,选择文件后,单击确认进入文本导入向导
找到"文件原始格式",默认为"简体中文",但在前面我们查看过原文件编码为"UTF-8",因此在这里设置成"UTF-8"。
手动修改Excel中识别原文件的编码
这波操作可以理解成在手动告诉Excel不要用默认编码,而是应该用原文件的编码。
第三步,设置分隔符
通常CSV文件的分隔符有两种:逗号或者空格。
设置分隔符
因为之前在使用记事本查看时,已经观察到使用的是逗号分隔,所以在这里直接勾选逗号即可。
第三步,完成以上两步,点击完成,基本上就大功告成了。
此时只要告诉excel要将原文件导入的起始单元格位置就可以开始导入了。如果需要搭建模型,记得把下面的”添加到模型”也勾选上。
表哥TIPS:
用Python导入CSV文件时,同样不会出现乱码,而且导入速度很快(千行毫秒)。
代码贴在下面,感兴趣的朋友可以自行试一试。
Python的方法导入csv文件