/*** 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文件中文乱码问题解决办法相关推荐

  1. UTF-8的CSV文件中文乱码问题解决办法

    UTF-8的CSV文件中文乱码问题解决办法 参考文章: (1)UTF-8的CSV文件中文乱码问题解决办法 (2)https://www.cnblogs.com/leaves1024/p/1117138 ...

  2. bootstrap table export插件导出pdf格式文件中文乱码问题解决办法

    bootstrap table export插件导出pdf格式文件中文乱码的问题折腾了我整整两天,网上到处都是改源码,自己设置字体的方案,我都没搞定.结果今天看到官方文档(地址:GitHub - hh ...

  3. python输出csv文件中文乱码-python读写csv时中文乱码问题解决办法

    CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV ...

  4. python读写csv时中文乱码问题解决办法

    参考1 参考2 参考3 CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和 ...

  5. python csv 中文乱码_python读写csv时中文乱码问题解决办法

    CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV ...

  6. java.net.url 中文乱码_jsp get Url请求方式中文乱码问题解决办法

    本文章来给大家介绍关于jsp get Url请求方式中文乱码问题解决办法,有需要的朋友可参考. jsp中post方式请求一般不会乱码,如果乱码加上这句: 解决办法一 代码如下 复制代码 request ...

  7. python 保存本地乱码,解决python保存数据到csv文件中文乱码的方法

    解决python保存数据到csv文件中文乱码的方法 发布时间:2020-07-08 13:49:53 来源:亿速云 阅读:695 作者:清晨 小编给大家分享一下解决python保存数据到csv文件中文 ...

  8. SQL工具导出CSV文件中文乱码

    DBeaver 导出CSV文件中文乱码 相信在做IT开发的人都碰到过,中文乱码的问题.特别是做数据的工程是,经常有用sql查出一批数据后,要导成CSV文件时,发现导出的信息中,中文都是乱码:便会在网上 ...

  9. java控制台打印输出 中文乱码 解决办法

    java控制台打印输出 中文乱码 解决办法 问题:IDEA控制台打印时出现中文乱码 原因:java资源的编码和ideal的不一致 解决办法: 第一步 1:打开intelliidea安装路径,Intel ...

最新文章

  1. 解决IIS中HTTP/1.1 500 Server Error错误的方法
  2. solr/lucence和关系数据库的混合使用
  3. python 分班_Python学习作业一
  4. nginx配置长连接
  5. boost::intrusive::treap_set用法的测试程序
  6. 20155210 Exp5 MSF基础应用
  7. 安装java环境linux和windows
  8. [zz]zookeeper的配置项
  9. OData debug - Java client - why my batch request fails
  10. 正则表达式匹配减号_THOR断点教程0910 网球规则1112 后附常用正则表达式数据...
  11. VC下ctreectrl的使用方法及节点前图标添加方法
  12. Java实验9 T6.将对象和数组存储在dat文件中
  13. slider轮播插件的多种写法
  14. VS debug调试时提示“未找到源”
  15. 复现IIS6.0PUT任意上传漏洞
  16. Java 标准开发包_JDK 9系列全套官方下载链接
  17. 《软件工程》第6章体系结构设计
  18. java中final类调用_Java中final的使用
  19. Linux Centos7 测试硬盘IO速度
  20. MyBatis从入门到精通(五)—MyBatis插件原理探究和自定义插件实现

热门文章

  1. 阅读返利,能拯救电纸书吗?
  2. PCB板设计阻抗匹配和零欧姆电阻作用解析
  3. dubbo源码学习(四):暴露服务的过程
  4. 华为开发者日(HDD)杭州站全程体验有感
  5. (L2-016)愿天下有情人都是失散多年的兄妹(dfs)
  6. 成功解决urllib.error.HTTPError: HTTP Error 403: Forbidden
  7. C语言long类型的变量占用4字节or8字节
  8. 用码前设计了一款回复女友神器
  9. Ubuntu20.04重新安装旧版本VS Code
  10. 装饰者设计模式知多少