首先.csv文件用记事本打开是正常的,可以看到数据,然后用Excel打开点击保存后,再用记事本打开该.csv文件就变成乱码了。
1、把“.csv”后缀名直接修改为“.txt”,转变为文本格式文档;
2、打开一个新的excel工作表,选择“打开”,在下方把文件类型修改为“文本文件”,然后选择刚才转变为.txt格式的文件;
3、打开文件后悔跳出“文本导入向导”对话框,如下图,可能是乱码,如何解决呢?看第4步;
4、将“文件原始格式”修改为windows(ANSI)
效果如下图,已经是正确的文字;
5、单击第4步的“下一步”,跳出下图“文本导入向导-步骤2”,在分隔符号里面选择“其他”,输入英文字符逗号,不是中文字符的逗号,不要输错,然后点击“下一步”;
6、跳出“文本导入向导-步骤3”窗口,根据不同的列数值,设置相应的格式,例如,我这里的测试表中,把“账号”这一列设置为“文本格式”;
7、最后选择“完成”,你就能看到原来没有出错/乱码的excel的效果。
原因:EXCEL的编码问题导致的乱码
解决:EXCEL打开CSV后,另存为的时候选择.xlsx,再点击‘工具’,找到编码更改一下为'utf8'或者‘简体中文(gb2312或gb18030)’即可
导出csv的时候需要iconv转码一下,而且win和liunx中的编码也不一样,你需要根据你的系统来判别是否转码,已经转码的格式。如果不明白可以私聊我。
你用EXCEL编辑保存的时候需要选择另存为,再把保存类型选择为CSV文件
1.可能编码格式不同
2.单元格里编辑数据肯定会导致格式改变
所以建议最好直接改文件,不用excel改或打开
方法1建议使用word或记事本打开,再则先另存新档后用excel打开
方法2如果你的机器上装了 Microsoft Excel 的话,.csv 文件默认是被 Excel 打开的。需要注意的是,当你双击一个.CSV 文件,Excel 打开它以后即使不做任何的修改,在关闭的时候 Excel 往往会提示是否要改成正确的文件格式,这个时候如果选择“是”,因为 Excel 认为.CSV 文件中的数字是要用科学记数法来表示的,Excel 会把 CSV 文件中所有的数字用科学计数来表示(2.54932E+5 这种形式),这样操作之后,只是在 Excel 中显示的时候会不正常,而 csv 文件由于是纯文本文件,在使用上没有影响;如果选择了“否”,那么会提示你以 xls 格式另存为 Excel 的一个副本。
所以如果你的 CSV 文件绝大部分都是用在集图上的话,建议把.CSV 的默认打开方式改成任意一个文本 编辑器,系统自带的记事本就是个不错的选择。
我碰到过这个问题,原因是:excel 在打开 .csv 文件时会读取文件头并设置编码格式,通常我们写入 .csv 文件时是不会写入文件头的,那么Excel就会默认以 utf-8-bom的格式打开,导致中文乱码,这里解决办法是写入的时候设置文件打开方式:
def write_to_csv(filepath, field, rows):
'''
写 csv 文件, 以 utf-8 bom 格式写入,保证 excel 打开时中文无乱码。
:param filepath:
:param field:
:param rows:
:return:
'''
with open(filepath, 'w', encoding='utf_8_sig') as cf:
write = csv.DictWriter(cf, fieldnames=field)
write.writeheader()
write.writerows(rows)