excel打开csv中文乱码文件乱码怎么办

一个.csv的excel文件打开后乱码,如何解决
一个.csv的excel文件打开后乱码,如何解决
23:30:00来源:
工作中遇到的问题:
一个.csv的excel文件打开后乱码,对方是office07的家庭版打开都正常,但我们公司电脑上Office2003打开后全是乱码,
且20003上中文语言包都安装好了,我添加安装了Office2007中文标准版后还是打开乱码。
SOS!Help!
&Franklin hongcsv 文件用Excel打开乱码_ASP.NET技巧_
csv 文件用Excel打开乱码
来源:人气:583
csv 文件用打开乱码
最近在做一个上传的功能,记录下自己的感受。
刚开始我用的是excel上传;但是发现客户服务器有用64位的,使用的时候程序会报错;
未在本地计算机上注册&Microsoft.Jet.OLEDB.4.0&提供程序
经查阅资料,发现是excel对64位的兼容性很差;64位不支持Microsoft OLE DB ovider for Jet驱动程序,也不支持更早的Microsoft
Driver (*.mdb)方式连接。所以用于Access 和 Excel 的 MicrosoftOLE DB Provider for Jet 在 64 位版本中不可用,也就是说,如下两种连接字符串都已经无法正常工作了:"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.mappath(db)"driver=Microsoft AccessDriver (*.mdb);DBQ="&Server.MapPath(db)我查找的解决方案中最多的是把程序在vs下重新编译:&生成-配置管理器-点击anyCPU-选择新建-创建x86&;解决。刚解决了这个问题,又一个问题出来了,另一个客户的服务器上没有装office;这又要怎么办呢,再求救度娘,发现要将excel的几个dll打包到自己的程序中,可素可素这样也太麻烦点了吧。这次我没有照做,而是选择的改变上传的文件格式;本来就是一块儿很小的东西,没有必要把它搞这么麻烦。我选择了csv文件。在网上有现成的读文件代码;直接用就行了。但是又遇到问题了,编码问题;用记事本或者写字板打开都没问题;但是用excel打开的时候问题来了,一堆乱码。肿么回事捏捏捏!原来excel打开默认的编码方式是ANSI,而ANSI标准不太统一,程序处理中文一般采用gb2312或者gbk,等;不过这个小问题对于我的项目来说可以忽略;让客户选择其他打开方式就行了,也没再往下探索了,你,知道吗?
总结:在使用某种特定技术之前应该要考虑它的使用平台和可移植性。
优质网站模板> JAVA/SERVLET 以UTF-8导出CSV文件时产生乱码的解决办法
JAVA/SERVLET 以UTF-8导出CSV文件时产生乱码的解决办法
lt209209 & &
发布时间: & &
浏览:143 & &
回复:0 & &
悬赏:0.0希赛币
JAVA/SERVLET 以UTF-8导出CSV文件时产生乱码的解决方法
  OutputStreamWriter osw = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");
// 要输出的内容
result = (String)contentMap.get(RESPONSE_RESULT);
resp.setHeader("Content-Disposition", "filename=test.csv");
osw.write(result);
osw.flush();
  在SERVLET中,通过以上代码将内容输出至CSV文件中后,用EXCEL打开文件时,总是产生乱码,但是用NOTEPAD++打开时,显示正常。然后,在NOTEPADD++的“格式”工具栏中查了一下文件编码,发现是“以UTF-8无BOM格式编码”,然后试着将其改为“以UTF-8格式编码”后,再用EXCEL打开时,OK,一切显示正常。那么,这么说明EXCEL是支持UTF-8格式的CSV文件的。同时,也说明,通过以上方式导出的文件中是不含BOM信息的(关于BOM信息请自行谷歌一下)。那么,接下来,为了要让EXCEL正确的显示,要做的事就很明显了----手动的给将要输出的内容加上BOM标识。具体方法如下:
  OutputStreamWriter osw = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");
// 要输出的内容
result = (String)contentMap.get(RESPONSE_RESULT);
resp.setHeader("Content-Disposition", "filename=test.csv");
osw.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }));
osw.write(result);
osw.flush();
  重点就是上面的红色代码(哎,ITEYE的这个编辑器怎么了,设置了颜色显示不出来)了(即倒数第三行代码),至于为什么要添加这个,只要你自己谷歌过BOM的话,自然就明白了。
  另外,如果你使用的是Response的OUT进行输出的话,可以这么搞:
  out = response.getOutputStream();
//加上UTF-8文件的标识字符
out.write(new
byte []{( byte ) 0xEF ,( byte ) 0xBB ,( byte ) 0xBF });
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&PHP 导出 CSV 文件用 Excel 打开出现中文乱码
本篇文章由:
写了一段导出 CSV 文件的代码,可以正常输出
使用 CSV 和 TXT 程序打开文件是正常的,但是使用 Excel 打开文件就出现了中文乱码的问题(这就奇怪了, 为什么在 Excel 中会乱码呢?)
通过查看编码发现,导出的 CSV 文件是 UTF-8 无BOM编码格式,而我们通常使用 UTF-8 编码格式 都是有 BOM 的。
尝试着添加了 BOM 之后,中文乱码的问题有解决了。
添加 BOM 到 CSV 文件中
$file = fopen($export_file_path, 'w');
fwrite($file, chr(0xEF).chr(0xBB).chr(0xBF)); // 添加 BOM
foreach ($contens as $content) {
fputcsv($file, $content);
fclose($file);
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
写出csv文件用Excel打开时报错,问题:为什么会出现这个问题?首先了解一下SYLK文件是什么?SYLK 文件是一个文本文件,开头的为&ID&或&ID_XXXX&(其中XXXX是文本字符串).SYLK 文件的第一个的记录是在 ID_Number 记录的.Excel 将识别该文本在文本文件开头时的字符,如果包含&q ...
解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题 其实这个问题很久之前遇到过, 应该是没解决, 当时的情况是openoffice打开正常而excel打开不正常, 后来也没解决了, 只能把编码转了. 这次又遇到这个问题了, 在网上一番寻找, 在一篇java的文章里找到了原因, 是由于输出的CSV文件中没有BOM. 什么是BOM? 在UCS 编 ...
最近在做一个上传的功能,记录下自己的感受.
刚开始我用的是excel上传:但是发现客户服务器有用64位的,使用的时候程序会报错: 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
经查阅资料,发现是excel对64位的兼容性很差;64位操作系统不支持Microsoft OLE DB Provider ...
最近在开发一个导出csv文件数据,到含有中文的时候会乱码,现在发现了一个很好的解决方案,就是再fwrite前加入一行代码即可. $fp = fopen(&order.csv&, &a&); //在写入数据之前先把bom头写到文件里 fwrite($fp,&\xEF\xBB\xBF&); $p=fwr ...
Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0. Excel打开csv文件时,只要字段值都是数字,它就认为该字段类型是数值.但我们存放在数据库中的纯数字char有可能会超过15位,这样导出csv文件后,用excel打开看到的字段值就不对了. 网上的解决方法 1 ...
什么是CSV文件?Comma Separator Value(逗号分隔值)是也.常常用来数据转换的中间文件存在,比如:从Mysql中导出数据到CSV,导入CSV到SqlServer中.最近在用Epsilon的邮件服务做邮件营销,Epsilon的web前端接受csv格式的邮件列表,于是乎在Linux下用PHP脚本从Mysql数据库中将user表的数据按照条件导 ...
1.thinkphp导出csv文件 导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this-&display(),最后细心看到think_page_trace这样的字样,恍然大悟,是页面的跟踪日志,这个默认是会输出来的.最后在方法后面加了一个e ...

我要回帖

更多关于 csv文件打开乱码 的文章

 

随机推荐