最近在做下载文件方面的程序,一路坎坷!各种乱码~虽然我加了字符过滤器但是毫无作用!
特别是在下载中文文件名很有问题。
乱码很多情况下都是由于整个软件的编码不统一而导致的,如:页面采用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一个就好了 要么直接去掉空格,要么替换为下划线 就下载正常咯。。。。
各位程序员你们有遇到过这个问题吗?如果你们有,采用我上面的方法应该可以解决你的难题了!望各位赐教,谢谢
分享到:
相关推荐
Java文件下载文件名乱码问题解决方案 Java 文件下载文件名乱码问题是指在下载 Java 文件时,文件名出现乱码现象,影响下载文件的正确性。这种问题通常有两种情况:一是下载时中文文件名乱码,二是下载时因为路径中...
### 解决不同浏览器下载时中文名乱码问题 在Web开发过程中,经常遇到的一个问题是当用户尝试下载包含中文字符的文件名时,会出现乱码的情况。这是因为不同的浏览器处理文件名编码的方式有所不同,导致服务器端设置...
在Java项目开发中,尤其是使用JSP技术时,经常遇到的中文乱码问题是一个常见的困扰。这涉及到编码和解码的过程,以及不同平台和环境之间的兼容性问题。Java的默认编码是Unicode,而中文文件和数据库通常使用GB2312或...
在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...
Linux 中 Java log 输出中文乱码解决方案 Linux 中 Java log 输出中文乱码问题是 Java 应用程序在 Linux 环境下一个常见的问题。该问题的产生是由于 Linux 系统的 locale 设置不正确导致的。locale 是 Linux 系统中...
通过以上知识点的深入理解和应用,可以有效地解决“fckeditor(java版-解决中文附件名称乱码问题)”这个问题,确保用户能够正常上传并保存带有中文名称的附件,从而提高产品在中文环境下的可用性和用户体验。
文章中的解决方案是引入一个名为"zip.jar"的小型库,该库可能是针对Android优化的一个版本,它能够正确处理中文字符的编码。这个库的大小只有24KB,意味着它不会显著增加应用的体积,同时提供了与系统解压API相似的...
### Java Web 开发中的中文乱码问题及其解决方案 在Java Web开发过程中,中文乱码问题是一种常见的技术难题,尤其在处理客户端与服务器间的数据交互时更为突出。本文将详细介绍Java Web开发中出现乱码的原因,并...
本篇文章将详细探讨如何在Java中解析CSV文件,并解决中文乱码的问题。 首先,我们需要了解如何使用Java的标准库`java.io`和`java.nio`来读取CSV文件。最常用的是使用`BufferedReader`配合`Scanner`或者`Files.lines...
### Java中文乱码处理 在Java开发过程中,中文乱码问题常常令人头疼,尤其是在Web应用中,客户端提交的数据经常会出现编码不一致导致的乱码问题。...希望这些解决方案能够帮助到正在面临此类问题的开发者们。
以下是一些针对Java项目编译时中文乱码问题的解决方案。 1. **IDE设置** - **Eclipse**:在Eclipse中,可以右键点击项目 -> 属性 -> Resource,设置文本文件的编码为UTF-8。此外,也可以在项目根目录下创建一个名...
本文将深入探讨Java传值中的乱码问题,并提供一种简单有效的解决方案。 #### 一、乱码产生的原因 在讨论如何解决乱码之前,我们需要先了解乱码产生的根本原因。通常来说,乱码主要是由于字符编码不一致造成的。当...
在IT行业中,文件压缩是一种常见的数据存储和传输方式,ZipOutputStream是Java标准库中的一个类,用于将数据流写入ZIP格式的压缩文件。本文将深入探讨如何使用ZipOutputStream进行文件压缩,并解决可能出现的乱码...
本文将详细探讨Linux下Java Swing程序中文乱码的原因及解决方案,帮助开发者有效解决此类问题。 ### 一、问题根源分析 #### 1. 编码设置不一致 在Linux系统中,Java应用的字符编码可能与系统默认的字符编码不同,...
在深入解析这一过程后,我们可以透视Java中文问题产生的根本原因,并给出最优化的解决方案。 首先,计算机最初的操作系统只支持单字节的字符编码,这意味着一切处理程序最初都是以单字节编码的英文字符进行处理。...
本文将探讨两种主要的解决乱码问题的策略,分别是针对MySQL数据库的设置调整和Web应用程序中的编码过滤器。 首先,对于MySQL数据库出现的乱码问题,我们需要关注数据库的字符集设置。MySQL默认可能使用的是`latin1`...
在Java开发过程中,乱码问题是开发者常常遇到的一个难题,尤其是在处理中文等非英文字符时更为突出。本文将详细介绍如何解决Java应用程序中的乱码问题,涵盖数据库端、页面端以及Servlet端的乱码解决方法。 #### ...
在部署WebLogic Server 10版本于UNIX操作系统时,可能会遇到中文乱码的问题,这主要...在实际操作过程中,可以参考提供的`weblogic10在UNIX下部署,中文乱码问题的解决.txt`文件,里面可能包含具体的步骤和解决方案。
最新版本的gdal版本为(release-1700-x64-gdal-1-11-4-mapserver-6-4-3)下载后读取shp文件总是乱码,查看了无数大神的文章后发现解决方案,但是对于我们这样的小白来讲,涉及到了反射,指针一类的东西,该方案并不是...