广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >java导出csv乱码解决方法介绍
  • 881
分享到

java导出csv乱码解决方法介绍

java 2021-01-05 13:01:35 881人浏览 猪猪侠
摘要

问题将查询的数据以xls文件导出时(UTF-8编码),数据正常;但以CSV文件导出时,文件中的中文乱码,同样是UTF-8编码,改成GBK编码导出时,中文显示正常。本以为问题解决,后面导出含拉丁字符(如ÀÆÊàÌ)的数据时,以xls文件导出数

问题

将查询的数据以xls文件导出时(UTF-8编码),数据正常;但以CSV文件导出时,文件中的中文乱码,同样是UTF-8编码,改成GBK编码导出时,中文显示正常。

本以为问题解决,后面导出含拉丁字符(如ÀÆÊàÌ)的数据时,以xls文件导出数据正常显示,以CSV文件导出时,文件中的拉丁字符显示为“?”号。

试着改成其他编码方式都无效,后面网上搜到了一篇解决该问题的方法。

解决方法

以CSV方式导出的文件中默认不含BOM信息,通过给将要输出的内容设置BOM标识(以 EF BB BF 开头的字节流)即可解决该问题。具体方法如下:(推荐:java视频教程

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

如果是以OutputStream流实现的 ,参数可以按如下修改:

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

注:

BOM: Byte Order Mark,字节顺序标记(以下摘自百度百科)

在UCS 编码中有一个叫做 “Zero Width No-Break Space” ,中文译名作“零宽无间断间隔”的字符,它的编码是 FEFF。而 FFFE 在 UCS 中是不存在的字符,所以不应该出现在实际传输中。

UCS 规范建议我们在传输字节流前,先传输字符 “Zero Width No-Break Space”。这样如果接收者收到 FEFF,就表明这个字节流是 Big-Endian 的;如果收到FFFE,就表明这个字节流是 Little- Endian 的。因此字符 “Zero Width No-Break Space(零宽无间断间隔)” 又被称作 BOM。

UTF-8 不需要 BOM 来表明字节顺序,但可以用 BOM 来表明编码方式。字符 “Zero Width No-Break Space” 的 UTF-8 编码是 EF BB BF。所以如果接收者收到以 EF BB BF 开头的字节流,就知道这是 UTF-8编码了。windows 就是使用 BOM 来标记文本文件的编码方式的。

更多java知识请关注Java基础教程栏目。

--结束END--

本文标题: java导出csv乱码解决方法介绍

本文链接: https://www.lsjlt.com/news/1961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java导出csv乱码解决方法介绍
    问题将查询的数据以xls文件导出时(UTF-8编码),数据正常;但以CSV文件导出时,文件中的中文乱码,同样是UTF-8编码,改成GBK编码导出时,中文显示正常。本以为问题解决,后面导出含拉丁字符(如ÀÆÊàÌ)的数据时,以xls文件导出数...
    99+
    2021-01-05
    java
  • java怎么解决导出csv文件乱码
    将查询的数据以xls文件导出时(UTF-8编码),数据正常;但以CSV文件导出时,文件中的中文乱码,同样是UTF-8编码,改成GBK编码导出时,中文显示正常。(推荐:java视频教程)解决方法:以CSV方式导出的文件中默认不含BOM信息,通...
    99+
    2020-05-06
    java基础 java 乱码
  • navicat导出csv乱码的方法
    这篇文章主要介绍了navicat导出csv乱码的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。  navicat是强大的可视化数据库管理工具...
    99+
    2022-10-18
  • java编译乱码解决方法介绍
    用cmd调试一下java语法,遇到如下问题:(推荐:java视频教程)Puppy.java:3: 错误: 编码 GBK 的不可映射字符 (0x80)解决办法:一、 编译时使用javac -encoding utf-8 命令代替j...
    99+
    2021-02-08
    java
  • java中string乱码解决方法介绍
    java string乱码解决方法:(推荐:java视频教程)System.out.println(str); String str1 = new String(str.getBytes("ISO-8859-1"),...
    99+
    2017-05-07
    java 乱码
  • Mysql 导入导出csv 中文乱码问题的解决方法
    导入csv:复制代码 代码如下:load data infile '/test.csv' into table table_name fields terminated by ','...
    99+
    2022-11-15
    Mysql csv 中文乱码
  • java中excel导出乱码解决方法
    错误方式:response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.getBytes(),"utf-8")); String file...
    99+
    2016-02-24
    java 乱码
  • java控制台乱码解决方法介绍
    java资源的编码都是utf8,使用utf8编译。但是控制台输出的时候,中文汉字还是会出现乱码。(推荐:java视频教程)eclipse控制台eclipse控制台的编码默认为操作系统的编码,比如GBK。这时候就不能正确显示utf8编码的汉字...
    99+
    2016-06-29
    java
  • java读文件乱码解决方法介绍
    使用java读取磁盘文件内容容易出现乱码, 问题是由于java使用的编码和被读取文件的编码不一致导致的。(推荐:java视频教程)假设有一个test.txt的文本文件,文件内容为:“测试java读取中文字符串乱码问题”, 其中包含中文,文件...
    99+
    2020-03-06
    java 乱码
  • php输出csv乱码的解决方法
    这篇“php输出csv乱码的解决方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php输出csv乱码的解决方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让...
    99+
    2023-06-06
  • php导出csv中文乱码的解决方法是什么
    本篇内容介绍了“php导出csv中文乱码的解决方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php导出csv中文乱码的解决办法:1...
    99+
    2023-06-25
  • php导出mysql csv乱码如何解决
    今天小编给大家分享一下php导出mysql csv乱码如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php导出mys...
    99+
    2023-07-04
  • java文件下载乱码解决方法介绍
    JAVA文件下载时乱码有两种情况:(推荐:java视频教程)1,下载时中文文件名乱码2,下载时因为路径中包含中文文件名乱码,提示找不到文件解决方法见下面部分代码response.setContentType("multipart/form-...
    99+
    2018-10-22
    java基础 java
  • phpMyAdmin导入csv中文乱码的解决方法
    小编给大家分享一下phpMyAdmin导入csv中文乱码的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!phpMyAdmin导入csv中文乱码怎么办项目中用到含有中文字段的数据CS...
    99+
    2022-10-18
  • java导出excel乱码原因及解决方法
    java导出错误方式与正确方法:(推荐:java视频教程)错误方式: response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.get...
    99+
    2015-10-16
    java基础 java
  • java导出excel乱码解决方法及原因
    java导出错误方式与正确方法:(推荐:java视频教程)错误方式: response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.get...
    99+
    2019-01-11
    java
  • java下载文件名乱码解决方法介绍
    java Web开发下载文件功能(代码如下),文件名如果带有中文,经常会出现乱码现象,需要进行编码。(推荐:java视频教程)String fileName = "测试文件.doc"; try { HttpServletRespo...
    99+
    2016-05-19
    java
  • php导出mysql csv乱码问题怎么解决
    本教程操作环境:Windows7系统、PHP8.1版、Dell G3电脑。php导出mysql csv乱码问题怎么解决?导出csv在windows下打开容易出现乱码,需要在文件头部写入BOM标识,已经封装成一个函数了 function ...
    99+
    2022-11-19
    乱码 php
  • java读取文件中文乱码解决方法介绍
    Java读取文本文件(例如csv文件、txt文件等),遇到中文就变成乱码。(推荐:java视频教程)读取代码如下:List lines=new ArrayList(); BufferedReader br = new Buffere...
    99+
    2020-12-12
    java基础 java
  • java zip压缩乱码原因与解决方法介绍
    java zip压缩乱码的原因与解决方法:(推荐:java视频教程)运行环境Jdk 1.5,win 7中文版JDK1.5中有zip压缩相关的API,在java.util.zip包下面。正常情况下,使用JDK自带的API把目录(文件)压缩成z...
    99+
    2015-12-05
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作