javacsv生成的csv用excel打开中文乱码

SourceForge上找到读写csv文件的开源代码。

但是生成的csv文件,如果用excel打开时,中文全部会乱码。原因是excel在解析csv文件时,默认以utf-8带BOM格式去解析的。

utf-8保存的csv格式文件要让Excel正常打开的话,必须加入在文件最前面加入BOM(Byte order)。

主要修改代码如下:

private void checkInit() throws IOException {
	if (!initialized) {
		if (fileName != null) {
			outputStream = new BufferedWriter(new OutputStreamWriter(
					new FileOutputStream(fileName), charset));

			//为了要让EXCEL显示csv中的中文不乱码,手动的给将要输出的内容加上BOM标识
			if (isUtf8WithBOM) {
				outputStream.write(new String(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF}));
			}
		}

		initialized = true;
	}
}

完整代码放到了gitee上。

原文地址:https://www.cnblogs.com/lee2guang/p/12569248.html

时间: 2024-10-06 23:03:53

javacsv生成的csv用excel打开中文乱码的相关文章

JAVA之编码---- CSV在文本下是正常的,用EXCEL打开是乱码的问题

JAVA之编码---->CSV在文本下是正常的,用EXCEL打开是乱码的问题 在JAVA下输出文件流,保存成CSV(用UTF-8)文件,怎么处理用EXCEL下是乱码,但是在记事本等其他软件都是正常的,同时显示也是UTF-8的编码,经过测试发现如下结果: 1.EXCEL只能打开ANSI的编码,而ANSI需要当前操作系统是什么编码,就用什么编码.如中文系统下,则只能认识GBK的编码,不可能认识UTF-8的编码,因此网上说的增加16进制下的EF BB BF,根本不是解决之道2.我们知道了EXCEL只能

关于CSV文件 Excel打开乱码问题的解决方案

近日写java程序中,将数据输出到csv文件中,发现Excel打开之后,中文均为乱码 于是寻找解决方案,发现最简单的方式还是如此了 1. 将输出的csv文件用记事本打开 2. 另存为将文件编码格式改为UTF-8 3. 再用Excel打开,乱码问题得以解决 ,

PL/SQL Developer 导出csv文件,用excel打开中文显示乱码

今天打算用PL/SQL Developer的导出csv功能把sql语句的查询结果导出到一个csv文件.这个sql查询的结果里面有中文,最后用execel打开的时候发现中文全部是乱码. 百度之后得到答案.下面的方法在excel2007下面验证成功 方法 1 导出csv格式文件 新建excel文件 比如 a.xls excel软件打开 选择菜单数据 -导入外部数据  unicode默认下一步 选择 逗号分隔符 点击确定导入完成 方法 2 导出成html格式  使用ie打开 在ie上点击右键 导出到

EPP3 php项目文件打开中文乱码 完美解决方案

问题描述:运行调试都没问题,但唯一的就是在EPP3中打开的源文件里中文是乱码 解决方案: 这里面有两处需要进行设置: 1.对项目属性进行设置 2.在窗口--首选项中,对工作空间进行设置 这两处都设置好以后,重启项目就可以看到原来的中文乱码,变成了正常中文字符了

csv文件导入数据库中文乱码

在向数据库的表中导入csv数据时,出现了中文乱码的问题,解决办法是在选择编码格式时选择10008 (MAC - Simplified Chinese GB 2312)即可 原文地址:https://www.cnblogs.com/z12568/p/12287355.html

Pandas使用to_csv保存中文数据用Excel打开是乱码

关于这个问题还是困扰了很久,我生成了一些样本数据,打算保存到csv文件,之后用pandas的命令: 1 # data是DataFrame的格式 2 data.to_csv('./data/myfile.csv') 这样的方式保存后,你用自己的exel打开该文件,一堆乱码,怎么办?使用如下方式解决 # data是DataFrame的格式 data.to_csv('./data/myfile.csv', encoding='utf_8_sig') 以后只要保存含有中文字符的这样存就可以了 原文地址:

java 导出CSV格式文件 EXCEL打开 防止乱码

package net.joystart.excelTask; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import

php 打开csv文件转成数组。打开中文乱码 解决办法

代码如下 //csv 打开 转码, $filename 指的是 目标csv 路径 $file = fopen($filename,"r"); while(!feof($file)) { $excel_array[] = (fgetcsv($file)); } // 打开乱码 需要转码 $excel_array = eval('return ' . iconv('gbk', 'utf-8', var_export($excel_array, true)) . ';'); // 删除第一行

转:CSV Data Set Config 中文乱码问题

从csv读取中文一直乱码. CSV Data Set Config的File encoding为GB2312,对应参数化文件编码也为GB2312,但读取出变量值一直为乱码,后发现是Allow quoted data属性设置错误,将该属性设置为false即可 Xml代码   Allow quoted data   Should the CSV file allow values to be quoted 关于CSV Data Set Config各个属性的意思可参考:http://jmeter.a