`
rensanning
  • 浏览: 3553323 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38233
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607654
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682841
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89568
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:402165
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69772
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91866
社区版块
存档分类
最新评论

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字符集识别的问题。




三种方法:

(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。



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();



也可以通过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();



这种方法能够避免变换编码引起的特殊字符不支持,也不需要很麻烦的导入数据,也可以对应改行数据。当然通过大部分文本编辑器也可以为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
  • 大小: 16.3 KB
  • 大小: 2.5 KB
  • 大小: 16.4 KB
  • 大小: 2.4 KB
  • 大小: 9.1 KB
  • 大小: 9.1 KB
分享到:
评论

相关推荐

    csv文件中文会乱码工具

    excel打开csv文件中文乱码问题,将乱码文件拖到此工具就可完成转码,正常显示中文。

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    Java避免UTF-8的csv文件打开中文出现乱码的方法 在Java中,避免UTF-8的csv文件打开中文出现乱码的方法是非常重要的。...同时,需要考虑Excel版本的兼容性问题,以确保csv文件可以正确地被打开和读取。

    中文系统中打开日文CSV文件不乱码.xlsm

    在中文系统中用Excel打开日文ANSI编码的CSV或TXT文件不乱码。 在日文系统中用Excel打开中文ANSI编码的CSV或TXT文件不乱码。 我自己写的:)

    解决方案_EXCEL打开Tableau导出数据存在中文乱码情况的解决方案

    CSV文件的编码方式默认是ANSI,而EXCEL打开CSV文件时也默认使用ANSI编码。如果CSV文件的编码方式为utf-8或Unicode等,EXCEL打开时就会出现中文乱码的情况。 解决这个问题的方法是使用记事本打开CSV文件,然后点击...

    PLSQL导出CSV后中文乱码解决办法

    然而,当你用某些工具(如Excel)打开CSV文件时,如果不指定正确的编码,就可能出现乱码。 以下是解决PLSQL导出CSV后中文乱码的步骤: 1. **创建一个新的Excel文件**:在桌面上或文件夹中新建一个.xlsx文件。这样...

    解决Arcgis10.2.2中dbf文件用EXCEL打开乱码问题.zip

    在ArcGIS 10.2.2版本中,用户可能会遇到一个常见的问题:当尝试用Microsoft Excel打开与ArcGIS相关的dbf文件时,数据可能会显示为乱码。这个问题主要涉及到字符编码的不匹配,下面我们将详细探讨这个问题的原因、...

    Oracle导出成csv格式后显示乱码的解决方法

    第一步是使用记事本打开CSV文件。记事本是一个简单的文本编辑器,它允许查看原始字符编码。打开文件后,如果中文已经正常显示,说明文件内容本身没有问题,只是打开方式或编码设置有误。 3. **记事本中重新保存为...

    php导出csv文件无乱码示例

    然而,由于编码问题,有时在导出CSV文件时会出现乱码。本示例将详细讲解如何使用PHP正确地导出CSV文件,避免出现乱码情况,并介绍相关的关键知识点。 首先,我们需要了解字符编码的基本概念。在处理文本数据时,...

    Navicat for MySql 导入EXCEL中文乱码问题解决

    ### Navicat for MySQL 导入Excel中文乱码问题解决 #### 一、问题背景 在使用Navicat for MySQL工具进行数据导入时,经常会出现中文乱码的问题,尤其是在处理Excel文件时更为常见。这种现象不仅影响数据的正确性,...

    爬虫csv乱码1

    5. 现在,使用Excel打开这个经过转换的CSV文件,由于编码方式与Excel相同,你应该能正常查看数据,不会有乱码问题。 为了避免这种编码问题,你还可以在Python中编写代码时,明确指定CSV文件的编码方式。例如,使用`...

    csv文件拆分或者转excel工具

    然而,CSV文件是纯文本格式,直接用Excel打开时,可能会出现数据失真问题,如乱码或数字过长导致的科学计数法显示。为了解决这些问题,本工具提供了将CSV文件拆分和转换为Excel文件的功能。 1. CSV文件拆分:将一个...

    解决Arcgis中dbf文件用EXCEL打开乱码问题

    然而,在某些情况下,当我们尝试使用Excel打开这些DBF文件时,可能会遇到乱码的问题。这主要是由于编码不兼容或者设置不当导致的。以下是一些详细的解决方案: 1. **检查文件编码**:首先,确认DBF文件的编码类型。...

    完美解决php 导出excle的.csv格式的数据时乱码问题

    以上这篇完美解决php 导出excle的.csv格式的数据时乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:php实现批量上传数据到数据库(.csv格式)的...

    [最新知识]excel打开是乱码怎么办.doc

    解决方法是使用文本编辑器(如记事本)打开CSV文件,将其另存为TXT文件,确保选择正确的编码(如UTF-8),然后再用Excel打开这个新保存的TXT文件,这样通常能显示正确的汉字。 其次,如果Excel文件本身损坏导致乱码...

    excel转csv转vcf和vcf转csv转excel

    导出手机vcf文件 - VCF2CSV读取vcf转为csv表格 - 打开excel\数据\导入外部数据(所有字优选文本类型) - 存中excel文件。 excel转csv转vcf步骤: excel文件 - 另存为csv表格 - VCF2CSV读取csv表格转为vcf - 导入手机

    Excel出现乱码怎么办?.docx

    1. 使用记事本打开CSV文件 当Excel文件出现乱码时,可以尝试使用记事本打开该文件。记事本是一种简单的文本编辑器,可以读取和编辑文本文件。在记事本中打开CSV文件,可能能够正确地显示文件中的中文字符。 2. ...

    EXCEL用VBA程序用ADO读取CSV

    通过这种方式,你可以方便地将CSV文件中的数据导入到Excel,进行进一步的数据分析和处理。 在"实例10-2.xls"中,可能包含了一个演示这个过程的完整VBA代码。同时,"学生成绩.csv"文件则是一个实际的数据源,包含了...

    基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)

    设置`Content-Type`为`application/vnd.ms-excel`可以实现导出为Excel文件,而`Content-Type`为`application/octet-stream`或`application/download`则可以用于导出为CSV文件。 2. 解决乱码问题的方法: - 当在XP...

    csv文件编辑器(中文版)

    在描述中提到的情况,当尝试用电子表格软件如Microsoft Excel打开CSV文件时,可能会遇到数据丢失的问题。这通常是由于不同软件对CSV格式的解析规则不一致,或者Excel在导入过程中自动转换了数据格式。例如,电话号码...

    csv转Excel, 后缀xlsx,xls

    - 文本编码:CSV文件可能使用不同的字符编码,如UTF-8或GBK,确保在转换时正确处理,避免乱码问题。 - 数值和日期:Excel可能会自动将数字和日期格式化,根据需要调整单元格格式。 - 大小限制:.xls格式对单个文件...

Global site tag (gtag.js) - Google Analytics