`

JAVA/SERVLET 以UTF-8导出CSV文件时产生乱码的问题与解决

阅读更多
在采用以下方法导出CSV文件时,可能会发现用Excel打开时乱码:
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();

但是发现用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();



声明:本文摘自 http://rainbow702.iteye.com/blog/1426354#comments,谢谢!
分享到:
评论

相关推荐

    java jsp解决utf-8乱码.zip

    在Java JSP开发中,遇到UTF-8编码导致的乱码问题是一个常见的困扰。这个问题主要涉及到字符编码的统一和正确处理。UTF-8是一种广泛使用的Unicode字符编码方案,它可以支持几乎所有的字符集,包括中文、日文和韩文。...

    解决Invalid byte 1 of 1-byte UTF-8 sequence

    标题 "解决Invalid byte 1 of 1-byte UTF-8 sequence" 涉及的问题是关于字符编码不匹配引发的错误,通常在处理包含非ASCII字符的文本文件时出现。UTF-8是一种广泛使用的字符编码标准,能表示世界上大部分语言的字符...

    java导出csv文件并压缩(含下载提示功能)

    在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...

    javax.servlet-api-4.0.1-API文档-中英对照版.zip

    赠送jar包:javax.servlet-api-4.0.1.jar; 赠送原API文档:javax.servlet-api-4.0.1-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.1-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.1.pom; ...

    springboot乱码问题解决方案

    这将设置SpringBoot项目的字符编码为UTF-8,解决乱码问题。 2. Maven插件配置 在pom.xml文件中添加以下配置: <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...

    jakarta.servlet-api-4.0.4-API文档-中文版.zip

    赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....

    [jspSmartUpload]------------>jspSmartUpload上传中文文件名 乱码问题

    标题中的“jspSmartUpload上传中文文件名乱码问题”是一个常见的技术挑战,特别是在处理Web应用程序时,特别是那些涉及用户上传文件的场景。JSP Smart Upload是早期流行的一个用于Java Web应用的文件上传组件,它...

    javax.servlet-api-3.0.1.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    java\Servlet技术--小例子.pdf

    <servlet-class>test1.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/test1/*</url-pattern> </servlet-mapping> </web-app> ``` - **...

    javax.servlet-api-4.0.1.jar

    《深入理解Java Servlet API 4.0.1与JSP自定义标签》 在Web开发领域,Java Servlet API和JSP(JavaServer Pages)是两个不可或缺的重要组件。本篇文章将聚焦于`javax.servlet-api-4.0.1.jar`这个jar包,它是Servlet...

    解决java enctype multipart form-data文件上传传值问题

    ### 解决Java enctype "multipart/form-data" 文件上传传值问题 在Java Web开发中,处理文件上传是一项常见的任务。特别是当涉及到使用`multipart/form-data`作为表单的编码类型时,这种需求更为突出。本文将深入...

    javax.servlet-api-3.1.0.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    Java Web上传组件使用:Commons-fileupload

    - 存储文件时,确保文件路径安全,避免路径遍历漏洞。 总之,Apache Commons FileUpload为Java Web开发提供了强大的文件上传功能。正确理解和使用这个组件,可以让你的文件上传功能既高效又安全。通过阅读给出的...

    javax.servlet-api-4.0.0-API文档-中文版.zip

    赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...

    java乱码问题解决方法

    Java 乱码问题是 Java 开发中常见的问题之一,解决这个问题需要了解 Java 的编码方式、JSP 中文乱码问题、Tomcat 5.5 中文乱码问题、JDBC ODBC Bridge 的 Bug 及其解决方法、Solaris 下 Servlet 编程的中文问题及...

    chexagon/redis-session-manager

    【标题】"chexagon/redis-session-manager" 是一个针对Java Web应用的session管理解决方案,它主要用于在基于JDK 8和Tomcat 8的环境中实现Redis作为session存储的工具。这个工具允许开发者将Web应用中的用户session...

    thrift 生成的java包servlet-api-2.5.jar

    thrift 生成的java包servlet-api-2.5.jar

    一个用servlet实现导出csv文件的实例

    在这个实例中,"一个用servlet实现导出csv文件的实例 - Java编程.htm"可能是博主分享的详细代码示例,而"一个用servlet实现导出csv文件的实例 - Java编程_files"可能包含与文章相关的其他辅助文件。在实际操作中,你...

    sentinel-web-servlet-1.8.0-API文档-中英对照版.zip

    赠送jar包:sentinel-web-servlet-1.8.0.jar; 赠送原API文档:sentinel-web-servlet-1.8.0-javadoc.jar; 赠送源代码:sentinel-web-servlet-1.8.0-sources.jar; 赠送Maven依赖信息文件:sentinel-web-servlet-...

Global site tag (gtag.js) - Google Analytics