OutputStreamWriter osw = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");
// 要输出的内容
result = (String)contentMap.get(RESPONSE_RESULT);
resp.setHeader("Content-Disposition", "attachment;filename=test.csv");
osw.write(result);
osw.flush();

在Java中,通过以上代码将内容输出至CSV文件中后,用EXCEL打开文件时,总是产生乱码。

但是用NOTEPAD++打开时,显示正常。然后,在NOTEPADD++的“格式”工具栏中查了一下文件编码,发现是“以UTF-8无BOM格式编码”。

然后试着将其改为“以UTF-8格式编码”后,再用EXCEL打开时,OK,一切显示正常。

那么,这么说明EXCEL是支持UTF-8格式的CSV文件的。

同时,也说明,通过以上方式导出的文件中是不含BOM信息的(关于BOM信息请自行谷歌一下)。

那么,接下来,为了要让EXCEL正确的显示,要做的事就很明显了----手动的给将要输出的内容加上BOM标识。具体方法如下:

OutputStreamWriter osw = new OutputStreamWriter(resp.getOutputStream(), "UTF-8");
// 要输出的内容
result = (String)contentMap.get(RESPONSE_RESULT);
resp.setHeader("Content-Disposition", "attachment;filename=test.csv");
osw.write(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }));
osw.write(result);
osw.flush();

重点就是上面的倒数第三行代码,至于为什么要添加这个,只要你自己谷歌过BOM的话,自然就明白了。

另外,如果你使用的是Response的OUT进行输出的话,可以这么搞:

out = response.getOutputStream();
//加上UTF-8文件的标识字符
out.write(new   byte []{( byte ) 0xEF ,( byte ) 0xBB ,( byte ) 0xBF });   

JAVA 以UTF-8导出CSV文件时产生乱码的解决方法相关推荐

  1. 微信小程序云开发导出CSV文件时出现乱码

    适用于云数据库和cms平台的数据导出为csv文件. 解决方法:先导出csv文件,在转换成Excel就可以了. 如图所示,当我导出数据并打开时候发现我的文件出现乱码问题, 解决步骤如下: 1.右击我们导 ...

  2. java大数据量导出csv文件并压缩

    java大数据量导出csv文件并压缩 java使用POI大数据量导出excel一般会存在以下几个问题: 一次从数据库查询出这么大数据,查询缓慢 查询数据量过大时会内存溢出 解决方案:分页查询数据,比如 ...

  3. java jar 源码乱码,java使用jar包时出现乱码的解决方法

    java使用jar包时出现乱码的解决方法 发布时间:2020-06-17 17:06:29 来源:亿速云 阅读:105 作者:元一 jar包是什么: jar(Java Archive,Java归档文件 ...

  4. ios html中文显示乱码,iOS读取txt文件出现中文乱码的解决方法

    一.情景描述: 后台给一个txt文件,编码是utf-8,在mac电脑xcode开发环境下读取txt文件内容,汉字会出现乱码,英文没有乱码这种情况. 二.尝试解决方法: 修改编码格式,尝试了nsutf1 ...

  5. python存成csv文件时中文乱码_Python在向CSV文件写中文时乱码的处理办法

    前言 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode. 当list.tuple.dict里面有中文时,打印出来的是Unicode编码,这个是无解的. 对 ...

  6. 新建jsp文件没有index.html,Eclipse------新建文件时没有JSP File解决方法

    1.为没有web选项的eclipse添加web and JavaEE插件 .在Eclipse中菜单help选项中选择install new software选项 .在work with 栏中输入 Ju ...

  7. 导出csv文件时,处理分隔符问题(转)

    转自:http://blog.sina.com.cn/s/blog_468530a60100kjpy.html CSV文件默认以英文逗号做为列分隔符,换行符作为行分隔符. 如果不提供网页形式只用命令行 ...

  8. python写csv文件分隔符问题_导出csv文件时,处理分隔符问题(转)

    CSV文件默认以英文逗号做为列分隔符,换行符作为行分隔符. 如果不提供网页形式只用命令行或二进制程序输出数据到CSV,只需要将数据段按,分割,行按\n分割,写入到一个.csv文件即可. 但有时字段里含 ...

  9. File 类型的文本框,选择文件时响应很慢解决方法

    file 类型的文本框用于文件上传,它有个 accept 属性,可以用来限定上传的文件类型.例如:accept="image/*" 可以用来限制只允许上传图像格式. 但是当指定类型 ...

最新文章

  1. Unet神经网络为什么会在医学图像分割表现好?
  2. 【二分查找】及相关问题
  3. Ubuntu apt-get 源详解
  4. 重设忘记的Mysql密码
  5. jbpm系列之五--使用decision节点判断分支情况
  6. 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing
  7. Android 3.0 r1 API中文文档(108) —— ExpandableListAdapter
  8. 系统集成项目管理工程师的含金量
  9. NLP常见语言模型总结
  10. [Lisp] [Scheme][MacOS]Scheme语言环境搭建
  11. C++解决程序一闪而退及清屏函数
  12. Python使用pip安装报错ModuleNotFoundError: No module named ‘pkg_resources‘的解决方法
  13. mcake蛋糕预订图片
  14. 完全拷贝的一份,程序员阅读书单
  15. 圣思园——Java SE Lesson 6
  16. 论文阅读笔记--Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers
  17. 微星电脑不能u盘引导linux,华硕笔记本u盘重装微星怎么启动不了系统系统系
  18. 一位IT新人对工作计划的心得体会
  19. 【机器学习】使用CatBoost库分析股票行情(指标为RSI、Boll、MACD和MA)并输出因子占比分析
  20. Android Webview录音功能与原生录音实现

热门文章

  1. ArcGIS安装问题及解决办法
  2. Processing——码绘与手绘对比静态篇
  3. 关于“国家重点实验室应该追求什么”的讨论
  4. 大班下学期家长会发言稿
  5. python修复老照片_10篇必读深度图像修复文章,珍贵老照片有救了!
  6. 连锁店管理系统如何帮助商家做好客户留存?
  7. (15)webpack externals
  8. 高铁环境下TD-LTE系统切换方法(1)
  9. 小程序上拉加载更多数据,分类切换状态等实例
  10. 快速排序与查找第K大的数