系统管理功能中,很多时候需要导入导出数据,基本上采用的也都是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
分享到:
相关推荐
excel打开csv文件中文乱码问题,将乱码文件拖到此工具就可完成转码,正常显示中文。
Java避免UTF-8的csv文件打开中文出现乱码的方法 在Java中,避免UTF-8的csv文件打开中文出现乱码的方法是非常重要的。...同时,需要考虑Excel版本的兼容性问题,以确保csv文件可以正确地被打开和读取。
在中文系统中用Excel打开日文ANSI编码的CSV或TXT文件不乱码。 在日文系统中用Excel打开中文ANSI编码的CSV或TXT文件不乱码。 我自己写的:)
CSV文件的编码方式默认是ANSI,而EXCEL打开CSV文件时也默认使用ANSI编码。如果CSV文件的编码方式为utf-8或Unicode等,EXCEL打开时就会出现中文乱码的情况。 解决这个问题的方法是使用记事本打开CSV文件,然后点击...
然而,当你用某些工具(如Excel)打开CSV文件时,如果不指定正确的编码,就可能出现乱码。 以下是解决PLSQL导出CSV后中文乱码的步骤: 1. **创建一个新的Excel文件**:在桌面上或文件夹中新建一个.xlsx文件。这样...
在ArcGIS 10.2.2版本中,用户可能会遇到一个常见的问题:当尝试用Microsoft Excel打开与ArcGIS相关的dbf文件时,数据可能会显示为乱码。这个问题主要涉及到字符编码的不匹配,下面我们将详细探讨这个问题的原因、...
第一步是使用记事本打开CSV文件。记事本是一个简单的文本编辑器,它允许查看原始字符编码。打开文件后,如果中文已经正常显示,说明文件内容本身没有问题,只是打开方式或编码设置有误。 3. **记事本中重新保存为...
然而,由于编码问题,有时在导出CSV文件时会出现乱码。本示例将详细讲解如何使用PHP正确地导出CSV文件,避免出现乱码情况,并介绍相关的关键知识点。 首先,我们需要了解字符编码的基本概念。在处理文本数据时,...
### Navicat for MySQL 导入Excel中文乱码问题解决 #### 一、问题背景 在使用Navicat for MySQL工具进行数据导入时,经常会出现中文乱码的问题,尤其是在处理Excel文件时更为常见。这种现象不仅影响数据的正确性,...
5. 现在,使用Excel打开这个经过转换的CSV文件,由于编码方式与Excel相同,你应该能正常查看数据,不会有乱码问题。 为了避免这种编码问题,你还可以在Python中编写代码时,明确指定CSV文件的编码方式。例如,使用`...
然而,CSV文件是纯文本格式,直接用Excel打开时,可能会出现数据失真问题,如乱码或数字过长导致的科学计数法显示。为了解决这些问题,本工具提供了将CSV文件拆分和转换为Excel文件的功能。 1. CSV文件拆分:将一个...
然而,在某些情况下,当我们尝试使用Excel打开这些DBF文件时,可能会遇到乱码的问题。这主要是由于编码不兼容或者设置不当导致的。以下是一些详细的解决方案: 1. **检查文件编码**:首先,确认DBF文件的编码类型。...
以上这篇完美解决php 导出excle的.csv格式的数据时乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:php实现批量上传数据到数据库(.csv格式)的...
解决方法是使用文本编辑器(如记事本)打开CSV文件,将其另存为TXT文件,确保选择正确的编码(如UTF-8),然后再用Excel打开这个新保存的TXT文件,这样通常能显示正确的汉字。 其次,如果Excel文件本身损坏导致乱码...
导出手机vcf文件 - VCF2CSV读取vcf转为csv表格 - 打开excel\数据\导入外部数据(所有字优选文本类型) - 存中excel文件。 excel转csv转vcf步骤: excel文件 - 另存为csv表格 - VCF2CSV读取csv表格转为vcf - 导入手机
1. 使用记事本打开CSV文件 当Excel文件出现乱码时,可以尝试使用记事本打开该文件。记事本是一种简单的文本编辑器,可以读取和编辑文本文件。在记事本中打开CSV文件,可能能够正确地显示文件中的中文字符。 2. ...
设置`Content-Type`为`application/vnd.ms-excel`可以实现导出为Excel文件,而`Content-Type`为`application/octet-stream`或`application/download`则可以用于导出为CSV文件。 2. 解决乱码问题的方法: - 当在XP...
- 文本编码:CSV文件可能使用不同的字符编码,如UTF-8或GBK,确保在转换时正确处理,避免乱码问题。 - 数值和日期:Excel可能会自动将数字和日期格式化,根据需要调整单元格格式。 - 大小限制:.xls格式对单个文件...
通过这种方式,你可以方便地将CSV文件中的数据导入到Excel,进行进一步的数据分析和处理。 在"实例10-2.xls"中,可能包含了一个演示这个过程的完整VBA代码。同时,"学生成绩.csv"文件则是一个实际的数据源,包含了...
在描述中提到的情况,当尝试用电子表格软件如Microsoft Excel打开CSV文件时,可能会遇到数据丢失的问题。这通常是由于不同软件对CSV格式的解析规则不一致,或者Excel在导入过程中自动转换了数据格式。例如,电话号码...