Excel打开CSV文件乱码的问题
系统管理功能中,很多时候需要导入导出数据,基本上采用的也都是CSV文件的形式(Excel读入还是比较麻烦)。由于字符集的问题,大部分都采用UTF-8编码。
CSV文件的默认打开方式是Excel,但双击UTF-8编码的CSV文件时,Excel是不能正常显示数据的,会乱码。这是做管理页面一个很常见的问题。
原因:
Excel本身是对应了UTF-8编码的,但当CSV文件是UTF-8编码时,原封不动的双击打开CSV文件时,Excel是无法识别为UTF-8的,而是按照系统默认字符ANSI(简体中文GB2312、日文Shift_JIS)来处理的就乱码了。所以根本原因是Excel字符集识别的问题。
[img]http://dl2.iteye.com/upload/attachment/0121/0921/17266a0b-ea0c-3deb-a031-50ed42701ad7.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0121/0923/5c0e15e0-ff92-3d60-a0b1-108ddda5e254.png[/img]
三种方法:
(1)把CSV文件的编码变换为系统字符集(UTF-8 -> GB2312/Shift_JIS)
这是最简单的方法。大部分文本编辑器都有“另存为”功能,保存时选择字符集。
问题:编码变换后,会有一些特殊字符无法支持。
(2)通过Excel读入外部数据
不需要改变编码,启动Excel,数据->自文本,选择 CSV 文件。
出现文本导入向导,选择 65001 : Unicode (UTF-8)、分隔符号选择逗号后导入数据即可。但每次导入比较麻烦。
问题:不支持换行的数据。
(3)采用UTF-8带BOM的编码
上边两种方法都不是根本的解决方法,都需要用户自己处理CSV文件,所以根本问题还是如何让Excel识别UTF-8编码。
方法是通过添加BOM可以使Excel识别文件为UTF-8编码。
BOM:Byte-Order Mark
https://en.wikipedia.org/wiki/Byte_order_mark
带BOM的文件会比不带BOM的文件多出3个字节,这三个字节是固定的:0xEF 0xBB 0xBF,其Unicode为\uFEFF。
[img]http://dl2.iteye.com/upload/attachment/0121/0925/751a4d48-ce13-3fa4-b027-c922d50ceb49.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0121/0927/cbc1f872-defe-3fbf-acf9-a2613894265e.png[/img]
FileOutputStream fos = new FileOutputStream("D:\\Test1.csv"); fos.write( 0xef );fos.write( 0xbb );fos.write( 0xbf );BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( fos, "UTF8" ));bw.write("a,b,c,d\r\n");bw.close();fos.close();
[img]http://dl2.iteye.com/upload/attachment/0121/0929/e2ffc038-c270-3c9d-9138-217e5f5bf1e9.png[/img]
也可以通过65279实现。
FileOutputStream fos = new FileOutputStream("D:\\Test2.csv");PrintWriter pw = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);pw.print((char)65279);pw.print("e,f,g,h\r\n");pw.flush();pw.close();fos.close();
[img]http://dl2.iteye.com/upload/attachment/0121/0931/43061f54-6d29-3390-8e7a-acb9c90888cb.png[/img]
这种方法能够避免变换编码引起的特殊字符不支持,也不需要很麻烦的导入数据,也可以对应改行数据。当然通过大部分文本编辑器也可以为UTF-8文件添加BOM。
问题:
处理CSV文件是要特殊处理文件的前三个字节。
Linux不支持BOM
Excel 2007需要安装sp3才支持
http://stackoverflow.com/questions/6002256/is-it-possible-to-force-excel-recognize-utf-8-csv-files-automatically
http://stackoverflow.com/questions/155097/microsoft-excel-mangles-diacritics-in-csv-files/9337150#9337150
Excel打开CSV文件乱码的问题相关推荐
- Excel 打开 CSV 文件乱码解决方法
Excel 打开 CSV 文件乱码解决方法 - 膨胀的面包 https://blog.wangtwothree.com/code/157.html 经常接触数据的朋友,可能时不时会遇到这种情况,一份 ...
- excel打开csv文件乱码解决办法
参考链接: https://jingyan.baidu.com/article/4dc408484776fbc8d846f168.html 问题:用 Excel 打开 csv 文件,确认有乱码的问题. ...
- Excel打开csv文件乱码问题的解决办法
产生背景 今天在用excel打开一个脚本生成的csv文件(存储编码格式为utf-8)时出现了乱码情况,但是用WPS直接打开却正常显示.因为文件是要交给客户的,office又是普遍使用的一枚办公软件,总 ...
- 解决Excel打开csv文件乱码的问题
当我们用Excel打开csv文件时,有时出现乱码的问题,如下: 出现乱码的原因: 在简体中文环境下,EXCEL打开的CSV文件默认是ANSI编码,如果CSV文件的编码方式为utf-8.Unicode等 ...
- EXCEL打开CSV文件乱码的解决方法
用C#程序通过StreamWriter导出字符串,导出生成txt文本文件,用记事本打开正常,改成csv格式,用excel打开乱码,且不能正确识别分列. 后用记事本打开,把编码从utf-8改成ansi之 ...
- 微软excel打开csv文件乱码,wps和txt不乱码,java后台解决
/*** 下载CSV文件*/@RequestMapping(value = "/dlcsv/{jobLogId}", method = RequestMethod.POST)@Re ...
- csv文件导入后台乱码_教师使用Excel打开csv文件出现乱码怎么办-Leo老师
在工作学习中,我们经常会遇到教师使用Excel打开csv文件出现乱码怎么办这样的问题.夏普说过:不经巨大的困难,不会有伟大的事业.因此,面对教师使用Excel打开csv文件出现乱码怎么办我们应该有努力 ...
- excel 打开csv中文乱码
excel 打开csv中文乱码 背景 用linux跑数据,拉取csv文件,下载到本地windows,然后用excel发现中文乱码了 解决办法 在linux中更改文件编码,两种方式 第一种,在打开的时候 ...
- excel打开csv 出现乱码怎么解决 逗号分隔
excel打开csv 出现乱码怎么解决 https://jingyan.baidu.com/article/ac6a9a5e4c681b2b653eacf1.html CSV是逗号分隔值的英文缩写,通 ...
最新文章
- MySQL , MHA , Haproxy 配置
- A simple Test Client built on top of ASP.NET Web API Help Page
- oracle 管道化表函数(Pipelined Table) [转]
- sublime编辑器中文乱码的问题
- python--thread多线程总结
- O太多,具体都代表什么呢?
- java 填充字符串_如何用Java填充字符串?
- 网络知识:秒懂你家的网络连接方式
- (46)System Verilog数组查找最大最小值
- AWS推出OpenJDK长期支持版本Amazon Corretto
- nginx 1.8.0下载
- 打造自己的U盘工具箱
- 安卓版 网易云音乐 6.4.3
- 001:InVEST学习——产水/水源涵养
- MJKDZ PS2手柄(BK2461):驱动安装问题及解决
- 将图片放大如何保持图片的清晰度?
- python 描述性分析_python数据分析:美国巴尔的摩16年公务员工资数据集描述性分析...
- 定值保险计算举例_保险学计算题
- 【C/C++】ifndef/define/endif的作用
- JAVA中怎样把用户输入的字符串存入数组中?
热门文章
- dell服务器启动顺序如何设置_戴尔品牌机怎么设置启动顺序(按F12进bios的)?
- 钛空舱模特队少女节高甜送祝福,助你永远18岁~看到流泪~
- 大龄程序员~聊聊我毕业十年的生活,kotlin入门书籍
- 云计算推动下一代IDC行业发展
- maven项目 导oracle驱动包错误,Missing artifact com.oracle,cannot be read or is not a valid ZIP file
- 个人为什么无法上架安卓 App 到国内应用商店?
- 工商银行软件测试面试流程,中国工商银行测试工程师笔试题.doc
- salt 服务器信息收集,使用saltstack自定义模块获取服务器的信息
- Swift之Umbrella header .h not found
- GeoServer中WMS、WFS的请求规范 (转)