excel打开csv出现乱码
现在做舆情分析的相关项⽬,在数据处理的时候,发现了⼀个问题。将数据写⼊到csv⽂件,⽤excel打开(默认)就会出现乱码,如果将数据写⼊到.xlsx⽂件就不会出现乱码,因为csv是通⽤格式,所以我猜想是excel的问题,在⽹上baidu了⼀下,发现果然是这样。
CSV是逗号分隔值的英⽂缩写,通常都是纯⽂本⽂件。CSV格式是分隔的数据格式,有字段/列分隔的逗号字符和记录/⾏分隔换⾏符。通常CSV⽂件可以⽤EXCEL正常打开,但是许多⼈都有这样的经历,使⽤EXCEL打开后,原本应该出现中⽂地⽅都变成乱码了。这种情况怎么解决呢?如下图:乱码文字生成
出现这种情况怎么解决呢?我们⾸先来分析⼀下此种情况的内在原因。在简体中⽂环境下,EXCEL打开的CSV⽂件默认是ANSI编码,如果CSV⽂件的编码⽅式为utf-8、Unicode等编码可能就会出现⽂件乱码的情况。
分析了原因后,⼀些⼈已经知道怎么解决了,但为⽅便初学者,这⾥还是⽤图⽂并茂的⽅式讲解⼀下解决步骤:
1. 使⽤记事本打开CSV⽂件
2. 点击菜单:⽂件-另存为,编码⽅式选择ANSI
3. 保存完毕后,再⽤EXCEL打开这个⽂件就不会出现乱码的情况。
前段时间⽤某软件导出了⼀个CSV⽂件,需要在Excel中处理并打印,但是我直接⽤Excel打开这个CSV⽂件却发现,⽂件中的所有中⽂字符都变成了乱码,经过⾃⼰的尝试,采⽤数据导⼊的⽅法解决了问题,后来⼜搜了⼀下,发现还有其他⽅法,数据导⼊只是其中⼀种⽽已。现在整理总结⼀下:
⽅法1、数据导⼊
打开 Excel,执⾏“数据”->“⾃⽂本”,选择 CSV ⽂件,出现⽂本导⼊向导,选择“分隔符号”,下⼀步,勾选“逗号”,去掉“ Tab 键”,下⼀步,完成,在“导⼊数据”对话框⾥,直接点确定。
导⼊之后,所有汉字显⽰正常,乱码问题解决。
⽅法2、先另存再打开
使⽤记事本打开CSV⽂件,“⽂件”->“另存为”,编码⽅式选择ANSI,保存完毕后,⽤EXCEL打开这个⽂件就不会出现乱码的情况。
问题产⽣的原因
为什么excel打开utf-8存储⽅式的⽂件会出现乱码呢?因为excel打开⽂件时默认使⽤unicode的编码⽅式(还有的⽹友说是默认以ANSI编码⽅式打开,待考)。在Unicode基本多⽂种平⾯定义的字符(⽆论是拉丁字母、汉字或其他⽂字或符号),⼀律使⽤2字节储存。恰恰utf-8是1字节的存储⽅式,所以excel直接打开时会出现乱码。
产⽣背景
今天在⽤excel打开⼀个脚本⽣成的csv⽂件(存储编码格式为utf-8)时出现了乱码情况,但是⽤WPS直
接打开却正常显⽰。因为⽂件是要交给客户的,office⼜是普遍使⽤的⼀枚办公软件,总不能让客户去安装⼀个WPS吧。⽹上⼀番查阅后,众说纷纭,因此特此记录下⾃⼰所踩过的坑:
解决⽅案
⽤记事本打开csv⽂件,另存为Unicode格式
之后⽤excel打开CSV⽂件,注意此时该⽂件的编码已是Unicode
若出现每⼀⾏所有字段在⼀个单元格的情况,解决步骤接着看下⾯
重新打开excel,执⾏”数据”->”⾃⽂本”->选择csv⽂件->”导⼊”->出现⽂本导⼊导向对话框->”下⼀步”->取消Tab键,选中逗号作为分隔符号->”确定”
待转换成功,则会在excel中正常显⽰
原因分析
Excel默认打开⽂件的编码格式是Unicode,所以当⽂件⾥⾯同时含有中⽂、韩⽂、西欧字符等等的时候,此时若⽂件为⾮
Unicode格式,由于编码格式不⼀致,将会出现乱码问题。