`
marc0658
  • 浏览: 80397 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

文件下载

阅读更多

IE7下载时文件名乱码

悬赏:20 发布时间:2008-11-19 提问人:jasongreen (高级程序员)

代码大致是这样写的 
Java代码  收藏代码
  1. response.setContentType(contentType);  
  2. if(StringUtils.hasText(encoding))  
  3.     response.setCharacterEncoding(encoding);  
  4. else  
  5.     response.setCharacterEncoding("utf-8");  
  6. response.setHeader("Content-Disposition""filename=\"" + new String(fileName.getBytes(), "ISO-8859-1") + "\"");  


1. 
使用windows测试,罗列一个目录下的文件, fileName 取的是 file.getName() 均可正常下载。 

2. 
使用Linux服务器,从mysql(utf-8)中获取的fileName, 
使用 IE6、Firefox、chrom、迅雷 均能正常下载,但IE7下载时是乱码,某些文件下载时弹出下载出错的框,进度条0%,这部分文件将文件名改掉后,重新上传,又可以正常下载,确定为文件名乱码所导致的错误。 

初步怀疑是 new String(fileName.getBytes(), "ISO-8859-1") 的问题
问题补充:
代码大致是这样写的 
<pre name="code" class="java"> 
response.setContentType(contentType); 
if(StringUtils.hasText(encoding)) 
response.setCharacterEncoding(encoding); 
else 
response.setCharacterEncoding("utf-8"); 
response.setHeader("Content-Disposition", "filename=\"" + new String(fileName.getBytes(), "ISO-8859-1") + "\"");</pre> 

1. 
使用windows测试,正常,IE7也可以正常下载 

2. 
使用Linux服务器, 
使用 IE6、Firefox、chrom、迅雷 均能正常下载,但IE7下载时是乱码,某些文件下载时弹出下载出错的框,进度条0%,这部分文件将文件名改掉后,重新上传,又可以正常下载,确定为文件名乱码所导致的错误。 

初步怀疑是 new String(fileName.getBytes(), "ISO-8859-1") 的问题 



问题补充:
问题已解决: 

Java代码  收藏代码
  1. String s = new String("中文");            sb.append("\nGetBytes():"+byteToString(s.getBytes()));  
  2. sb.append("\nGetBytes(GBK):"+byteToString(s.getBytes("GBK")));  
  3. sb.append("\nGetBytes(UTF-8):"+byteToString(s.getBytes("UTF-8")));  
  4. sb.append("\nGetBytes(ISO):"+byteToString(s.getBytes("ISO-8859-1")));  
  5. String s2 = new String(s.getBytes(),"ISO-8859-1");  
  6. sb.append("\nout:"+byteToString(s2.getBytes("ISO-8859-1")));  


win: 
GBK 
GetBytes():d6d0cec4 
GetBytes(GBK):d6d0cec4 
GetBytes(UTF-8):e4b8ade69687 
GetBytes(ISO):3f3f 
out:d6d0cec4 

linux: 
UTF-8 
GetBytes():e4b8ade69687 
GetBytes(GBK):d6d0cec4 
GetBytes(UTF-8):e4b8ade69687 
GetBytes(ISO):3f3f 
out:e4b8ade69687 

分析: IE7 不能够识别以 UTF-8 编码的下载文件名。 
解决方法: new String(fileName.getBytes("GBK"),"ISO-8859-1")

采纳的答案

2008-11-19 agile_boy (初级程序员)

new String(fileName.getBytes("ISO-8859-1")) 
or 
new String(fileName.getBytes("ISO-8859-1"),"UTF-8")

提问者对于答案的评价:
分给你了

其他回答

引用
new String(fileName.getBytes(), "ISO-8859-1")


Debug下看是否正常的文件名; 就能确定是否是编码问题了..
bohemia (架构师) 2008-11-19
应该是文件名乱码的问题。 
我觉得还是用filter实现编码转换比较好。 
http://onlylove.iteye.com/blog/156508
water84222 (初级程序员) 2008-11-19
引用

初步怀疑是 new String(fileName.getBytes(), "ISO-8859-1") 的问题

应该是 
Java代码  收藏代码
  1. new String(fileName.getBytes("ISO-8859-1"), "GBK")  

分享到:
评论

相关推荐

    Fish文库文档下载工具

    "Fish文库文档下载工具"的核心功能在于其对多种文档网站的兼容性,能够突破常规的在线预览限制,将文档转化为可本地存储的PDF文件。这样,用户就可以随时随地查阅,无需依赖网络连接,极大地提高了学习和工作的效率...

    不需要会员的文档下载器

    在提供的压缩包文件中,“ExuiKrnln_Win32.lib”可能是一个动态链接库文件,用于支持“萝卜头文档下载器.exe”的功能实现。这类库文件通常包含可被其他程序调用的函数,可能包含了解析网页、模拟登录、抓取下载链接...

    基于java的book118文档下载器.zip

    总之,"基于Java的book118文档下载器"是一个综合运用了网络请求、HTML解析、文件操作等多种Java技术的实用工具,其具体实现会涉及到网络编程、数据解析、文件I/O等多个计算机科学和技术领域。对于学习Java编程和网络...

    在线文档下载器

    在线文档下载器可能使用此库来解析和处理从网站下载的PDF文件,确保用户可以本地存储和阅读这些文档。 “iDocDown.exe”是主程序执行文件,是在线文档下载器的核心部分。它包含了实现下载功能的算法和逻辑,能够...

    ajax实现java文件下载

    6. **新建 文本文档.txt**:这可能是示例中的一个测试文件,用于演示如何通过Ajax进行下载。在实际应用中,这个文件的名称和类型将由用户选择或由业务逻辑决定。 具体实现步骤: 1. **前端**:在JSP文件中,使用...

    【原创力文档下载工具】利用python下载原创力文档 .zip

    【原创力文档下载工具】利用Python下载原创力文档是一个典型的Web爬虫应用场景,它涉及到Python编程语言、网络请求、文件处理以及可能的HTML解析技术。在这个项目中,开发者使用Python来自动化获取并下载原创力平台...

    超级好用的百度文档下载工具

    标题中的“超级好用的百度文档下载工具”指的是一个专门设计用于从百度文库下载文档的应用程序。这个工具旨在提供一种高效、简便的方式来获取百度文库中的资源,从而避免在线阅读时可能出现的不便,比如广告干扰、...

    收费文档下载方法c.zip

    这些工具能够解析百度文库的页面,抓取文档内容并将其转换成本地文件。使用这类工具时,用户需要复制百度文库文档的网页链接,然后粘贴到工具的输入框内,按照提示进行操作。值得注意的是,这种方法可能受制于网站的...

    豆丁网文件下载器

    豆丁网免费下载器(冰点)无需登录也无需积分,只需要将需要下载的文档的网页地址复制在软件的录入框中就可以自由下载,并最终生成pdf文件。对部分pdf文件能够提取文字生成txt。 豆丁网免费下载器还支持自由下载百度、...

    小叶文档下载器.zip

    1、在本站下载解压,得到小叶文库下载器软件包; 2、首先前往文库网站找到需要下载的文库 3、将其文库地址复制粘贴到软件中,进行解析下载;...4、之后下载好的文件可在本自录下的Download文件夹进行查看。

    在线文档下载神器

    对于"Fish-v321"这个文件,根据上下文推测,这可能是某个特定的在线文档下载神器的版本号或者是该工具的安装包文件名。具体的功能和使用方法,可能需要进一步查阅相关软件的说明书或者进行实际操作来了解。总的来说...

    Visual Studio 2010 帮助文件下载助手

    visual studio 2010的帮助文档很难下载,一方面文件很多很大,全部文档超过1GB,使用微软自带的 或者辅助工具,由于没有发挥多线程和断点续传的特点,下载速度很慢,容易失败。 另一方面迅雷等下载工具,可以实现...

    文档下载工具

    至于文件`idocdown_v28`,这可能是该文档下载工具的版本号或者是程序的执行文件名。在实际使用中,用户需要将这个文件解压并安装在本地计算机上,然后按照软件的指示操作,输入目标文档的网址,工具便会自动开始下载...

    国密文档下载链接

    国密规范文档所有标准稳当的下载链接,SM2/SM3/SM4/SM9等,各种国密产品检测规范

    豆丁文档下载器(可下载收费文档)

    豆丁文档下载器是一款专为了解决用户在豆丁网上下载文档困难而设计的软件工具。豆丁网是一个在线文档分享平台,用户可以上传、分享和查找各种类型的文档,包括学术论文、研究报告、课件、书籍等。然而,豆丁网为了...

    文档下载器.zip

    【描述】"文档下载器" 提供了一个集成化的解决方案,让用户能够轻松下载网络上的文档资源,特别是可能存在于各种文档分享平台上的PDF、SWF等格式的文件。它可能包含了用于处理不同文件类型的组件,以及一些支持程序...

    pb实现http文件下载功能--源代码 可以直接使用

    标题中的“pb实现http文件下载功能--源代码 可以直接使用”指的是使用PowerBuilder(简称PB)编程语言实现HTTP协议进行文件下载的功能,并且提供了可以直接使用的源代码。这个功能在软件开发中常用于实现自动更新...

    豆丁文档下载破解器

    豆丁文档下载破解器. 豆丁文档下载破解器. 豆丁文档下载破解器.

    csv文件下载(人员信息.txt)

    由于在学习numpy数据分析的时候没有csv类型文件,又懒得自己一个个敲字,便想来csdn里随便下载一个。然而......居然要钱啊!!!!!!!我没钱,所以自己写了个,我不要你们的钱,麻烦各位拿资源的时候吱一声,这是...

    Java实现文件下载功能

    在IT领域,尤其是Web开发中,文件下载是常见的需求之一,例如用户可能需要从服务器下载各种类型的文件,如文档、图片、压缩包等。本文将详细解析如何使用Java来实现这一功能,特别是针对Word文档的下载。 #### 重要...

Global site tag (gtag.js) - Google Analytics