Java csv文件中文乱码问题解决办法
/*** CSV文件生成方法* @param head 文件头* @param dataList 数据列表* @param outPutPath 文件输出路径* @param filename 文件名* @return*/public static File createCSVFile(List<String> head, List<List<String>> dataList,String outPutPath, String filename) {File csvFile = null;BufferedWriter csvWtriter = null;try {csvFile = new File(outPutPath + File.separator + filename + ".csv");File parent = csvFile.getParentFile();if (parent != null && !parent.exists()) {parent.mkdirs();}csvFile.createNewFile();// GB2312使正确读取分隔符","FileOutputStream fileOutputStream = new FileOutputStream(csvFile);byte [] bs = { (byte)0xEF, (byte)0xBB, (byte)0xBF};fileOutputStream.write(bs);csvWtriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));//csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(// csvFile),"GB2312"),1024);//csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(// csvFile),"utf-8"),1024);//Map map = new HashMap<>();//map.put("head", head);// 写入文件头部writeRow(head, csvWtriter);// 写入文件内容for (List<String> row : dataList) {writeRow(row, csvWtriter);}csvWtriter.flush();} catch (Exception e) {e.printStackTrace();} finally {try {csvWtriter.close();} catch (IOException e) {e.printStackTrace();}}return csvFile;}/*** 写一行数据方法* @param row* @param csvWriter* @throws IOException*/private static void writeRow(List<String> row, BufferedWriter csvWriter) throws IOException {// 写入文件头部for (String data : row) {StringBuffer sb = new StringBuffer();//String rowStr = sb.append("\"").append(data).append("\",").toString();String rowStr = sb.append(data).append(",").toString();csvWriter.write(rowStr);}csvWriter.newLine();}public static void main(String[] args) {List<String> exportData = new ArrayList<>();exportData.add("第一列");exportData.add("第二列");exportData.add("第三列");List<List<String>> datalist = new ArrayList<>();List<String> data = new ArrayList<>();data.add("111");data.add("222");data.add("333");List<String> data1 = new ArrayList<>();data1.add("444");data1.add("555");data1.add("666");datalist.add(data);datalist.add(data1);String path = "C:/Users/Desktop";String fileName = "10";File file = createCSVFile(exportData, datalist, path, fileName);String fileName2 = file.getName();System.out.println("文件名称:" + fileName2);}
windows系统中文本文档的编码格式用BOM来指定,在文件的开头要写入字符:EF BB BF(UTF-8的BOM编码),这样UTF-8编码的文件才能被正确识别。
关于BOM
BOM(byte-order mark),即字节顺序标记,用于标记字节序的,也就是大小端。UTF- 8以字节为编码单元,没有字节序的问题,因此UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式,在Windows系统中就是使用BOM来标记文本文件的编码方式的。UTF- 8的BOM编码是EF BB BF,Excel发现文件开头的EF BB BF就知道文件编码方式是UTF- 8,因此就能正常显示中文。
Java csv文件中文乱码问题解决办法相关推荐
- UTF-8的CSV文件中文乱码问题解决办法
UTF-8的CSV文件中文乱码问题解决办法 参考文章: (1)UTF-8的CSV文件中文乱码问题解决办法 (2)https://www.cnblogs.com/leaves1024/p/1117138 ...
- bootstrap table export插件导出pdf格式文件中文乱码问题解决办法
bootstrap table export插件导出pdf格式文件中文乱码的问题折腾了我整整两天,网上到处都是改源码,自己设置字体的方案,我都没搞定.结果今天看到官方文档(地址:GitHub - hh ...
- python输出csv文件中文乱码-python读写csv时中文乱码问题解决办法
CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV ...
- python读写csv时中文乱码问题解决办法
参考1 参考2 参考3 CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和 ...
- python csv 中文乱码_python读写csv时中文乱码问题解决办法
CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV ...
- java.net.url 中文乱码_jsp get Url请求方式中文乱码问题解决办法
本文章来给大家介绍关于jsp get Url请求方式中文乱码问题解决办法,有需要的朋友可参考. jsp中post方式请求一般不会乱码,如果乱码加上这句: 解决办法一 代码如下 复制代码 request ...
- python 保存本地乱码,解决python保存数据到csv文件中文乱码的方法
解决python保存数据到csv文件中文乱码的方法 发布时间:2020-07-08 13:49:53 来源:亿速云 阅读:695 作者:清晨 小编给大家分享一下解决python保存数据到csv文件中文 ...
- SQL工具导出CSV文件中文乱码
DBeaver 导出CSV文件中文乱码 相信在做IT开发的人都碰到过,中文乱码的问题.特别是做数据的工程是,经常有用sql查出一批数据后,要导成CSV文件时,发现导出的信息中,中文都是乱码:便会在网上 ...
- java控制台打印输出 中文乱码 解决办法
java控制台打印输出 中文乱码 解决办法 问题:IDEA控制台打印时出现中文乱码 原因:java资源的编码和ideal的不一致 解决办法: 第一步 1:打开intelliidea安装路径,Intel ...
最新文章
- 解决IIS中HTTP/1.1 500 Server Error错误的方法
- solr/lucence和关系数据库的混合使用
- python 分班_Python学习作业一
- nginx配置长连接
- boost::intrusive::treap_set用法的测试程序
- 20155210 Exp5 MSF基础应用
- 安装java环境linux和windows
- [zz]zookeeper的配置项
- OData debug - Java client - why my batch request fails
- 正则表达式匹配减号_THOR断点教程0910 网球规则1112 后附常用正则表达式数据...
- VC下ctreectrl的使用方法及节点前图标添加方法
- Java实验9 T6.将对象和数组存储在dat文件中
- slider轮播插件的多种写法
- VS debug调试时提示“未找到源”
- 复现IIS6.0PUT任意上传漏洞
- Java 标准开发包_JDK 9系列全套官方下载链接
- 《软件工程》第6章体系结构设计
- java中final类调用_Java中final的使用
- Linux Centos7 测试硬盘IO速度
- MyBatis从入门到精通(五)—MyBatis插件原理探究和自定义插件实现