`
successfulroof
  • 浏览: 74318 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 下载 中文名 乱码 问题 和解决方案

阅读更多

最近在做下载文件方面的程序,一路坎坷!各种乱码~虽然我加了字符过滤器但是毫无作用!

特别是在下载中文文件名很有问题。

乱码很多情况下都是由于整个软件的编码不统一而导致的,如:页面采用GBK或者GB2312的方法,而java 后台代码采用UTF-8 这样很可能就会导致乱码问题的存在。我在实际中也遇到过了

 

一般我们解决乱码的方法可以分几种:

1.配置过滤器

   配置过滤器总的来说还是可行的,但是当我以GET方式来传递参数为中文的时候总是有些问题

2.javascript 的 encodeURIComponent 方法

   encodeURIComponent的方法可以有效的解决中文乱码问题 encodeURIComponent 能够将中文 用十六进制的转义序列进行替换,然后在后台使用java里面的UrlDecoder里面的decode方法来解码

第二种方法问题也是有的,有时候不知道为什么 解码不正确,不得不对中文进行两次encodeURIComponent 然后在java里面使用decode 来decode一次(有人说request取出中文来的时候已经decode了一次),而实际中我编码了两次,然后decode两次才有用。这个也不是很靠谱

以上是基本乱码解决方法

 

当遇到web下载时候,我们要给这个下载的文件一个文件名,这样很可能就会导致文件无法下载或下载乱码

 

解决办法 :

  String fileName = request.getParameter("fileName");

获得传过来的文件名 这里在页面我没有使用 encodeURIComponent 编码 ,我的java代码采用utf-8的编码,无疑,我获得的fileName是乱码的;

然后我使用 fileName = new String(fileName.getBytes("ISO8859_1"),"UTF-8"); 打印出中文就正常了,没有乱码

这个文件名如果直接作为下载名还是不行的,下载文件时候还是乱码

如果我这边

response.setContentType( "application/x-octetstream;charset=ISO8859_1"); 

 这是设置下载内容编码 然后:

response.setHeader("Content-Disposition", "attachment;fileName="+ new String(fileName.getBytes("GBK"),"ISO8859_1"));

 按理说这样子即可解决中文乱码问题,不过你要确保在fileName 使用

new String(fileName.getBytes("GBK"),"ISO8859_1")

之前 fileName在java里面可以正常打印,也就是打印出来不是乱码。

好了,这样看起来确实没有问题。难道所有中文文件都可以下载了吗?

答案是否定的(我这边有部分有问题,不知道大侠可否有)

也就是当我的 文件名中间如果含有 “空格”,注意 这个“空格”对下载有很大的影响,他很有可能就导致了

new String(fileName.getBytes("GBK"),"ISO8859_1")

转发失败!!我做了N次调试,都被这个空格给坑了。。一直没发现就是它的问题,然后我把空格replaceAll一下 ,随便replaceall一个就好了 要么直接去掉空格,要么替换为下划线 就下载正常咯。。。。

各位程序员你们有遇到过这个问题吗?如果你们有,采用我上面的方法应该可以解决你的难题了!望各位赐教,谢谢

 

 

 

 

分享到:
评论
1 楼 gc715409742 2012-09-29  
楼主分析的很详细, mark;

"操蛋的民工" 博客名不敢苟同。

相关推荐

    详解关于java文件下载文件名乱码问题解决方案

    Java文件下载文件名乱码问题解决方案 Java 文件下载文件名乱码问题是指在下载 Java 文件时,文件名出现乱码现象,影响下载文件的正确性。这种问题通常有两种情况:一是下载时中文文件名乱码,二是下载时因为路径中...

    解决不同浏览器下载时中文名乱码问题

    ### 解决不同浏览器下载时中文名乱码问题 在Web开发过程中,经常遇到的一个问题是当用户尝试下载包含中文字符的文件名时,会出现乱码的情况。这是因为不同的浏览器处理文件名编码的方式有所不同,导致服务器端设置...

    java项目jsp中乱码问题解决

    在Java项目开发中,尤其是使用JSP技术时,经常遇到的中文乱码问题是一个常见的困扰。这涉及到编码和解码的过程,以及不同平台和环境之间的兼容性问题。Java的默认编码是Unicode,而中文文件和数据库通常使用GB2312或...

    java下载时文件名乱码

    在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...

    Linux中java log输出中文乱码.docx

    Linux 中 Java log 输出中文乱码解决方案 Linux 中 Java log 输出中文乱码问题是 Java 应用程序在 Linux 环境下一个常见的问题。该问题的产生是由于 Linux 系统的 locale 设置不正确导致的。locale 是 Linux 系统中...

    fckeditor(java版-解决中文附件名称乱码问题)

    通过以上知识点的深入理解和应用,可以有效地解决“fckeditor(java版-解决中文附件名称乱码问题)”这个问题,确保用户能够正常上传并保存带有中文名称的附件,从而提高产品在中文环境下的可用性和用户体验。

    java android zip解压缩(解决压缩中文乱码问题)

    文章中的解决方案是引入一个名为"zip.jar"的小型库,该库可能是针对Android优化的一个版本,它能够正确处理中文字符的编码。这个库的大小只有24KB,意味着它不会显著增加应用的体积,同时提供了与系统解压API相似的...

    java Web开发乱码解决方案

    ### Java Web 开发中的中文乱码问题及其解决方案 在Java Web开发过程中,中文乱码问题是一种常见的技术难题,尤其在处理客户端与服务器间的数据交互时更为突出。本文将详细介绍Java Web开发中出现乱码的原因,并...

    java 解析csv文件例子,csv文件 中文乱码问题

    本篇文章将详细探讨如何在Java中解析CSV文件,并解决中文乱码的问题。 首先,我们需要了解如何使用Java的标准库`java.io`和`java.nio`来读取CSV文件。最常用的是使用`BufferedReader`配合`Scanner`或者`Files.lines...

    java 中文乱码 处理

    ### Java中文乱码处理 在Java开发过程中,中文乱码问题常常令人头疼,尤其是在Web应用中,客户端提交的数据经常会出现编码不一致导致的乱码问题。...希望这些解决方案能够帮助到正在面临此类问题的开发者们。

    java项目编译时中文乱码解决

    以下是一些针对Java项目编译时中文乱码问题的解决方案。 1. **IDE设置** - **Eclipse**:在Eclipse中,可以右键点击项目 -> 属性 -> Resource,设置文本文件的编码为UTF-8。此外,也可以在项目根目录下创建一个名...

    java传值中的乱码

    本文将深入探讨Java传值中的乱码问题,并提供一种简单有效的解决方案。 #### 一、乱码产生的原因 在讨论如何解决乱码之前,我们需要先了解乱码产生的根本原因。通常来说,乱码主要是由于字符编码不一致造成的。当...

    ZipOutputStream 压缩文件以及乱码问题解决方案

    在IT行业中,文件压缩是一种常见的数据存储和传输方式,ZipOutputStream是Java标准库中的一个类,用于将数据流写入ZIP格式的压缩文件。本文将深入探讨如何使用ZipOutputStream进行文件压缩,并解决可能出现的乱码...

    Linux下java的Swing程序乱码解决

    本文将详细探讨Linux下Java Swing程序中文乱码的原因及解决方案,帮助开发者有效解决此类问题。 ### 一、问题根源分析 #### 1. 编码设置不一致 在Linux系统中,Java应用的字符编码可能与系统默认的字符编码不同,...

    免费_java中文乱码字符集解决大全

    在深入解析这一过程后,我们可以透视Java中文问题产生的根本原因,并给出最优化的解决方案。 首先,计算机最初的操作系统只支持单字节的字符编码,这意味着一切处理程序最初都是以单字节编码的英文字符进行处理。...

    浅谈乱码问题的解决方案

    本文将探讨两种主要的解决乱码问题的策略,分别是针对MySQL数据库的设置调整和Web应用程序中的编码过滤器。 首先,对于MySQL数据库出现的乱码问题,我们需要关注数据库的字符集设置。MySQL默认可能使用的是`latin1`...

    java中的乱码问题

    在Java开发过程中,乱码问题是开发者常常遇到的一个难题,尤其是在处理中文等非英文字符时更为突出。本文将详细介绍如何解决Java应用程序中的乱码问题,涵盖数据库端、页面端以及Servlet端的乱码解决方法。 #### ...

    weblogic10在UNIX下部署,中文乱码问题的解决

    在部署WebLogic Server 10版本于UNIX操作系统时,可能会遇到中文乱码的问题,这主要...在实际操作过程中,可以参考提供的`weblogic10在UNIX下部署,中文乱码问题的解决.txt`文件,里面可能包含具体的步骤和解决方案。

    解决GDAL读取shp文件属性和中文乱码问题的类c#

    最新版本的gdal版本为(release-1700-x64-gdal-1-11-4-mapserver-6-4-3)下载后读取shp文件总是乱码,查看了无数大神的文章后发现解决方案,但是对于我们这样的小白来讲,涉及到了反射,指针一类的东西,该方案并不是...

Global site tag (gtag.js) - Google Analytics