Excelcsv打开乱码CSV文件中文显示乱码该怎么办

&& 文章内容
Excel打开出现乱码的解法方法
[日期:] & 来源:IT部落窝& 作者:IT部落窝 & 阅读:104730次[字体:
内容提要:本文介绍excel打开出现是乱码问题的几种方法,通过文件格式转换、第三方工具等等来修复Excel乱码问题。
  excel出现乱码的原因也是多种多样。如果你遇到excel打开是乱码,可以从下面找找相应的解决办法。
第一,CSV文件用excel打开是乱码
  从网页导出的CSV文件, 用Excel打开,中文会是乱码。 CSV文件乱码问题主要是文件编码引起的。因此要解决Excel打开乱码的问题,可以从改文件开始:
  首先,用记事本打开CSV文件,可能看到很长的一条数据记录。
  然后,直接把刚才打开的文件另存为txt文件,如果是UTF-8的文件,你应该可以看到保存成的编辑格式。
  最后,用Excel直接打开这个另存的文件。应该能看到正确的汉字。
第二,excel文件损坏出现乱码
  有时打开一个以前编辑好的Excel工作簿,却出现乱码,无法继续进行编辑打印。这种情况的原因应该是该文件已经被损坏了,可以尝试使用下面的方法之一来修复Excel乱码。
1.将Excel乱码文件另存为SYLK格式
  如果Excel乱码文件能打开,将Excel乱码文件转换为SYLK格式可以筛选出文档的损坏部分,然后再保存数据。
2.Excel乱码文件转换为较早的版本
  若因启动故障而没有保存Excel乱码文件,则最后保存的版本可能不会被损坏。关闭打开的工作簿,当系统询问是否保存更改时,单击“否”。在“文件”菜单中,单击“打开”命令,双击该工作簿文件。
3.打开Excel乱码文件并修复工作簿
  如果Excel乱码文件根本不能够使用常规方法打开,可以尝试Excel 2003中的“打开并修复”功能,该功能可以检查并修复Excel乱码文件中的错误。
  单击 “文件”――“打开”。通过“查找范围”框,定位并打开包含受损文档的文件夹,选择要恢复的文件。单击“打开”按钮旁边的箭头,然后单击“打开并修复”即可。
  excel乱码问题也不是一篇能写尽的,因为出现的原因实在太多样。如果上面的方法依然无效,可以借助第三方软件来尝试解决excel乱码。   
  Office Excel Viewer是微软官方出品的一款excel乱码清除修复工具,下载安装完毕,用Office Excel Viewer打开有乱码的excel文档,然后复制单元格,并将它们粘贴到Excel的一个新工作簿中。
  出现Excel乱码问题也不是100%能解决,只能尽量的尝试,将数据丢失率降为最小。
photoshop教程
平面设计教程6173人阅读
桌面程序(1)
最近又遇到了需要提供csv下载功能的需求,不同的时需要用java来实现,心想简单,就把以前php的版本重写了一遍,然后生成一份csv,用excel2007打开一看,里面的中文都是乱码,一下就懵了,以前好好的功能怎么突然不行了??以前也一直用2007的啊!于是开始了漫长的google之旅。
看来看去,说的都是输出utf-8格式的csv需要在文件头先输出BOM(BOM不懂的可以google了),即0xEF 0xBB 0xBF三个字节,这样更摸不着头脑了,明明是对的,偏偏不成功,直到发现一个帖子:&,里面提到2007需要装sp3才能识别BOM,shit!原来是这回事!里面同时又提到,用utf-16le编码输出貌似更通用,经测试确实如此,但是utf-16le的BOM是0xFF
0xFE,帖子里面说错了!下面是一个简单的测试结果:
因为条件有限,只测试了这几个版本,可见utf-16le是更通用的编码格式。下面附上java代码,main方法中采用utf-16le编码,最后调用了utf8编码的方法,最后会输出两种编码格式的csv文件:
import java.io.*;
* Created by zhaozhi on 15-5-29.
public class TestCSV {
public static String join(String[] strArr, String delim) {
StringBuilder sb = new StringBuilder();
for(String s : strArr) {
sb.append(s);
sb.append(delim);
if (strArr.length & 1) {
ret = sb.substring(0, sb.length()-1);
ret = sb.toString();
public static
void main (String[] args) throws
Exception {
String[] heads = {&日期&, &产品&, &订单数&};
String[][] rows = {
{&&, &安卓&, &23&},
{&&, &web&, &34&}
byte[] bom = {(byte)0xFF, (byte)0xFE};
String fname = &d:\\utf-16le.csv&;
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(fname));
bo.write(bom);
bo.write(join(heads, &\t&).getBytes(&utf-16le&));
bo.write(&\n&.getBytes(&utf-16le&));
for (String[] row : rows) {
bo.write(join(row, &\t&).getBytes(&utf-16le&));
bo.write(&\n&.getBytes(&utf-16le&));
bo.close();
public static void UTF8() throws IOException {
String line = &中文,标题,23&;
OutputStream os = new FileOutputStream(&d:/utf-8.csv&);
os.write(239);
os.write(187);
os.write(191);
PrintWriter w = new PrintWriter(new OutputStreamWriter(os, &UTF-8&));
w.print(line);
w.flush();
w.close();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:135235次
积分:1753
积分:1753
排名:第17440名
原创:35篇
评论:23条
(1)(1)(1)(1)(3)(1)(1)(2)(1)(6)(3)(1)(2)(1)(2)(1)(1)(2)(1)(1)(1)(1)(1)(1)(1)(1)(1)(8)Excel打开CSV显示乱码怎么办_Excel表格
Excel打开CSV显示乱码怎么办
学习啦【Excel表格】 编辑:嘉铭
  我们在excel来打开csv的文件时,会发现中文内容显示乱码,这该如何解决呢?下面就跟学习啦小编一起看看吧。
  打开CSV显示乱码的解决步骤
  1、上周四,从某网站导出的数据直接打开是这样的
  2、项目紧急,实在没有时间来处理这样的问题了。崩溃中。尝试使用JSON格式导出数据,然后转化成CSV格式,格式排版太差,事倍功半。
  3、幸好啊,发现JSON格式的数据中文其实是不乱码的。用sublime text编辑器打开csv,发现中文显示正常
  4、说明原始的导出数据没有问题,而是编码解码的方式有问题。尝试直接另存为文件。
  5、发现直接保存方式不可行。
  6、看来需要制定编码方式,中文简体,重新保存。终于是搞定了。
Excel打开CSV显示乱码的相关文章:
本文已影响 人
[Excel打开CSV显示乱码怎么办]相关的文章
看过本文的人还看了
11006人看了觉得好
718人看了觉得好
2264人看了觉得好
【Excel表格】图文推荐
Copyright & 2006 -
All Rights Reserved
学习啦 版权所有EXCEL打开CSV文件乱码的解决方法 - 风过 无痕 - 博客园
后用记事本打开,把编码从utf-8改成ansi之后,就可以正确识别分列和没乱码了。
【故障现象描述】
从网页上导出数据文件存储为CSV格式的文件,使用记事本打开文字显示没有问题,使用EXCEL打开出现乱码的情况。
【故障原因分析】
此种情况一般是导出的文件编码的问题。在简体中文环境下,EXCEL打开的CSV文件默认是ANSI编码,如果CSV文件的编码方式为utf-8、Unicode等编码可能就会出现文件乱码的情况。
【解决方法】
(1)设置office语言环境(以office 2003为例):
开始菜单-Microsoft office- Microsoft office工具- Microsoft office 2003语言设置,将Microsoft office应用程序默认方式的语言设为&中文(简体)&,这也是office 2003的默认设置。
(2)使用记事本打开CSV文件,文件-另存为,编码方式选择ANSI:
(3)保存完毕后,用EXCEL打开这个文件就不会出现乱码的情况:
【编码方式讲解】
(1)ANSI编码
不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。 当然对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表1个字符。这一点是ASNI编码与Unicode编码之间最大也最明显的区别。例如上面演示的文件中英文字母和数字并没有出现乱码的情况。
(2)Unicode编码
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
(3)UTF-8编码
UTF-8是UNICODE的一种变长字符编码又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如日文,韩文)。
随笔 - 400
评论 - 246}

我要回帖

更多关于 mysql导出csv中文乱码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信