使用IE7浏览器,打开附件链接时,超过15个汉字会出现9D%这样的乱码文件名,而且下载后的文件无法打开。
如下代码当stepFile_names[i]长度超过15个汉字时在IE6是正常的,在IE7下会出现9D%乱码,且附件无法打开:
<a href=’<%=request.getContextPath()%>/<%=stepFile_paths[i]%>’ target=’_tab’><%=stepFile_names[i]%></a>
对此问题,由于无法缩减文件名称,故采用输出流办法解决。
即将上面代码进行判断
<%
for ( int i = 0; i < stepFile_paths.length; i++ )
{
String fileName = URLEncoder.encode(stepFile_names[i].substring(0, stepFile_names[i].lastIndexOf(".")), "UTF-8");
if (fileName.length() > 150)
{
%>
<a href="<%=request.getContextPath() %>/producetask/download/Download.jsp?fileUrl=<%=stepFile_paths[i] %>&fileName=<%=stepFile_names[i] %>" target="_tab"><%=stepFile_names[i]%></a>
<%
}
else
{
%>
<a href='<%=request.getContextPath() %>/<%=stepFile_paths[i].replaceAll("/frameweb/|/newframeweb/","/")%>' target="_tab"><%=stepFile_names[i]%></a>
<%
}
从代码上可以看出,当文件名长度超出限制时,通过Download.jsp进行处理(由于UTF-8编码的汉字使用9个字节进行存储,而15*9<150<16*9,故使用150进行判断)
在Download.jsp中,通过将附件读取至输出流中,返回至客户端,以达到解决问题的目的。代码如下:
OutputStream output=response.getOutputStream();
response.reset();
response.setContentType(Download.getContentType(fileName.substring(fileName.lastIndexOf(".") + 1)) + ";charset=GBK");
String s = fileName.substring(0, fileName.lastIndexOf("."));
String name = new String(s.getBytes("GBK"), "ISO8859_1") + fileName.substring(fileName.lastIndexOf("."));
response.addHeader("Content-Disposition", "inline;filename=" + name);
Download.copyFile(rootPath + fileUrl, output);
copyFile方法主要是将rootPath+fileUrl路径的文件内容读取至output输出流中。
至此,该问题解决,但以上解决办法会增加内存负担,因为文件内容在客户端打开而未下载时,其一直保存在内存中。考虑该问题出现几率较小,且未超出限定长度时不会采用该处理方式。
分享到:
- 2009-02-16 12:52
- 浏览 1875
- 评论(0)
- 论坛回复 / 浏览 (0 / 2402)
- 查看更多
相关推荐
标题“ie7 搜索乱码修正”涉及到的是在使用Internet Explorer 7(简称ie7)进行网络搜索时遇到的字符编码问题。这个问题通常表现为搜索结果或者网页内容显示为无法识别的乱码,这可能是由于浏览器的字符编码设置不...
在“fckeditor(java版-解决中文附件名称乱码问题)”这个主题中,主要涉及的知识点包括: 1. **字符编码**:字符编码是计算机处理文字的基础,常见的有ASCII、GBK、UTF-8等。在Java中,默认的编码是UTF-8,但有些...
java下载附件中文乱码
1. **附件名称乱码问题**:在PHPMailer中,默认情况下,当使用`AddAttachment`方法添加附件时,它会尝试通过`basename()`函数获取文件名。然而,`basename()`在某些PHP版本中并不支持非ASCII字符,因此导致中文字符...
例如,在RHEL 6.9操作系统上的达梦 7数据库中,使用ODBC版本2.3.0对中文字符串进行插入操作时,查看插入的数据发现中文字符串部分为乱码。 二、问题分析 为了解决该问题,我们需要从多方面进行分析。首先,我们...
为了解决这一问题,特别推出了“Windows 7 7106 乱码补丁”,它旨在消除系统中的乱码现象,同时保持系统其他功能的正常运行。 乱码问题通常源于字符编码不兼容或系统设置错误。在Windows 7 7106中,这可能是由于...
在使用FusionCharts图表库进行数据可视化时,可能会遇到一个常见问题:当用户点击图表中的柱子(或者条形图)触发链接时,链接中的中文字符会出现乱码现象。该问题通常出现在设置柱子属性的`link`参数中包含中文或...
IE11在处理非ASCII字符的文件名时,可能会由于编码不一致导致乱码。这是因为不同的系统和浏览器对文件名的编码处理方式可能存在差异。在UTF-8编码环境下,如果服务器未正确设置文件名的编码格式,IE11可能会将其解析...
在Internet Explorer(IE)浏览器中,如果用户在下拉框(Dropdown List)中看到的内容显示为乱码,这通常是因为字符编码不匹配或浏览器不支持某些特殊字符集所导致的。IE浏览器,特别是较旧的版本,对于Unicode和...
在IT领域,特别是Web开发中,字符编码的处理是一大挑战,尤其是在跨浏览器、跨平台的环境下,如在Ajax请求中遇到的FireFox与IE之间的乱码兼容问题。本文将深入探讨这一问题,并提供详细的解决方案。 ### Ajax与字符...
总之,IE浏览器在GET请求下出现中文乱码,主要是由于字符编码不匹配导致的。通过调整服务器设置、HTML文档声明、浏览器设置或进行URL编码,可以有效解决这一问题。随着现代浏览器对UTF-8的支持越来越完善,这类问题...
本文将详细探讨如何在使用7-Zip软件解压文件时解决中文乱码问题,以及如何在C#编程环境中处理这一问题。 首先,我们需要了解乱码产生的原因。中文乱码通常是因为字符编码不一致导致的。当压缩文件创建时采用了一种...
这将导致中文附件名称乱码。 MimeUtility.encodeText() 的作用 在 SpringBoot 中,我们通常使用 MimeUtility.encodeText() 方法来编码附件名称。但是,这个方法并不能完全解决中文乱码问题。这是因为 SpringBoot ...
7. 重启JMeter,现在你应该能够正常上传包含中文文件名的文件,而不会出现乱码问题。 需要注意的是,这种解决方案可能不适用于所有JMeter版本。例如,在JMeter 5.0及更高版本中,这个问题可能已经得到解决。因此,...
在OpenSMTP中,如果附件带有汉字并且编码未正确设置,可能会导致接收端显示乱码。因此,"描述"中提到的解决方案是,通过在邮件头中指定"Content-Type"字段为"application/octet-stream; charset=UTF-8",以告知接收...
4. **程序配置不当**:编程语言或者应用程序的编码设置不正确,例如在Java中未指定正确的字符集,可能会导致乱码。 5. **网络传输问题**:在网络传输过程中,如果文件的编码信息丢失,或者传输过程中数据损坏,也...
Confluence是一款强大的团队协作文档管理平台,但在使用过程中可能会遇到由于编码问题导致的乱码现象。这类问题主要体现在PDF导出、附件预览以及小工具等方面。本文将详细介绍这些问题的表现形式、原因分析以及具体...
在codesoft7中,乱码问题可能源于以下几个方面: 1. **系统环境变量设置不当**:操作系统的区域设置、语言包配置或字体支持不足,都可能导致乱码。 2. **软件内部编码设定**:codesoft7自身的编码设置未能与输入...
而"kkfile发票预览乱码需要的字体"这一名称表明,它针对的是kkfile的特定需求,可能是某些发票模板所独有的字体,或者是为了兼容某些特定的编码标准。 在日常工作中,遇到类似问题时,应首先检查系统是否缺少必要的...
描述中提到的“使用方法见本人博客《IE中js往后台传输中文乱码》”,暗示了解决这个问题可能需要在JavaScript(JS)中进行操作,特别是在与Internet Explorer(IE)浏览器交互时。IE在处理编码方面有一些独特的行为...