`
Dead_knight
  • 浏览: 1201036 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
752c8642-b795-3fe6-946e-a4e845bffdec
Spring Securi...
浏览量:240222
33caa84e-18a6-3036-a82b-6e2106a4de63
clojure专题
浏览量:48923
E17ca077-44df-3816-a3fe-471c43f6e1e5
WebLogic11g
浏览量:236878
社区版块
存档分类
最新评论

IE7中附件链接名称过长导致乱码

阅读更多
使用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输出流中。
至此,该问题解决,但以上解决办法会增加内存负担,因为文件内容在客户端打开而未下载时,其一直保存在内存中。考虑该问题出现几率较小,且未超出限定长度时不会采用该处理方式。
分享到:
评论

相关推荐

    ie7 搜索乱码修正

    标题“ie7 搜索乱码修正”涉及到的是在使用Internet Explorer 7(简称ie7)进行网络搜索时遇到的字符编码问题。这个问题通常表现为搜索结果或者网页内容显示为无法识别的乱码,这可能是由于浏览器的字符编码设置不...

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

    在“fckeditor(java版-解决中文附件名称乱码问题)”这个主题中,主要涉及的知识点包括: 1. **字符编码**:字符编码是计算机处理文字的基础,常见的有ASCII、GBK、UTF-8等。在Java中,默认的编码是UTF-8,但有些...

    java下载附件中文乱码.xls

    java下载附件中文乱码

    让phpmailer支持中文名称的附件和邮件标题中文乱码

    1. **附件名称乱码问题**:在PHPMailer中,默认情况下,当使用`AddAttachment`方法添加附件时,它会尝试通过`basename()`函数获取文件名。然而,`basename()`在某些PHP版本中并不支持非ASCII字符,因此导致中文字符...

    使用ODBC中文乱码问题.docx

    例如,在RHEL 6.9操作系统上的达梦 7数据库中,使用ODBC版本2.3.0对中文字符串进行插入操作时,查看插入的数据发现中文字符串部分为乱码。 二、问题分析 为了解决该问题,我们需要从多方面进行分析。首先,我们...

    Windows 7 7106 乱码补丁

    为了解决这一问题,特别推出了“Windows 7 7106 乱码补丁”,它旨在消除系统中的乱码现象,同时保持系统其他功能的正常运行。 乱码问题通常源于字符编码不兼容或系统设置错误。在Windows 7 7106中,这可能是由于...

    fusioncharts 点击柱子链接,中文乱码

    在使用FusionCharts图表库进行数据可视化时,可能会遇到一个常见问题:当用户点击图表中的柱子(或者条形图)触发链接时,链接中的中文字符会出现乱码现象。该问题通常出现在设置柱子属性的`link`参数中包含中文或...

    kkfile中发票pdf预览中文乱码 windows字体包

    而"kkfile发票预览乱码需要的字体"这一名称表明,它针对的是kkfile的特定需求,可能是某些发票模板所独有的字体,或者是为了兼容某些特定的编码标准。 在日常工作中,遇到类似问题时,应首先检查系统是否缺少必要的...

    Java Web文件下载,解决了使用IE11下载文件时所出现的乱码问题

    IE11在处理非ASCII字符的文件名时,可能会由于编码不一致导致乱码。这是因为不同的系统和浏览器对文件名的编码处理方式可能存在差异。在UTF-8编码环境下,如果服务器未正确设置文件名的编码格式,IE11可能会将其解析...

    IE浏览器下拉框出现乱码的问题

    在Internet Explorer(IE)浏览器中,如果用户在下拉框(Dropdown List)中看到的内容显示为乱码,这通常是因为字符编码不匹配或浏览器不支持某些特殊字符集所导致的。IE浏览器,特别是较旧的版本,对于Unicode和...

    Ajax FireFox IE 乱码兼容问题

    在IT领域,特别是Web开发中,字符编码的处理是一大挑战,尤其是在跨浏览器、跨平台的环境下,如在Ajax请求中遇到的FireFox与IE之间的乱码兼容问题。本文将深入探讨这一问题,并提供详细的解决方案。 ### Ajax与字符...

    IE 浏览器在get请求下中文乱码的问题.zip

    总之,IE浏览器在GET请求下出现中文乱码,主要是由于字符编码不匹配导致的。通过调整服务器设置、HTML文档声明、浏览器设置或进行URL编码,可以有效解决这一问题。随着现代浏览器对UTF-8的支持越来越完善,这类问题...

    解压文件时中文乱码问题处理

    本文将详细探讨如何在使用7-Zip软件解压文件时解决中文乱码问题,以及如何在C#编程环境中处理这一问题。 首先,我们需要了解乱码产生的原因。中文乱码通常是因为字符编码不一致导致的。当压缩文件创建时采用了一种...

    解决JMeter上传包含中文文件名乱码ApacheJMeter_http.jar

    7. 重启JMeter,现在你应该能够正常上传包含中文文件名的文件,而不会出现乱码问题。 需要注意的是,这种解决方案可能不适用于所有JMeter版本。例如,在JMeter 5.0及更高版本中,这个问题可能已经得到解决。因此,...

    Opensmtp1.11.0解决附件乱码问题

    在OpenSMTP中,如果附件带有汉字并且编码未正确设置,可能会导致接收端显示乱码。因此,"描述"中提到的解决方案是,通过在邮件头中指定"Content-Type"字段为"application/octet-stream; charset=UTF-8",以告知接收...

    乱码解决 乱码解决 乱码解决 乱码解决 乱码解决

    4. **程序配置不当**:编程语言或者应用程序的编码设置不正确,例如在Java中未指定正确的字符集,可能会导致乱码。 5. **网络传输问题**:在网络传输过程中,如果文件的编码信息丢失,或者传输过程中数据损坏,也...

    codesoft7乱码解决办法

    在codesoft7中,乱码问题可能源于以下几个方面: 1. **系统环境变量设置不当**:操作系统的区域设置、语言包配置或字体支持不足,都可能导致乱码。 2. **软件内部编码设定**:codesoft7自身的编码设置未能与输入...

    解决gb2312编码导致乱码问题

    描述中提到的“使用方法见本人博客《IE中js往后台传输中文乱码》”,暗示了解决这个问题可能需要在JavaScript(JS)中进行操作,特别是在与Internet Explorer(IE)浏览器交互时。IE在处理编码方面有一些独特的行为...

    freemarker 中文乱码解决

    2. **数据模型的编码**:当数据模型中的中文字符编码与模板引擎的默认编码不匹配时,也会导致乱码。 3. **页面输出的编码**:即使前两者编码正确,如果最终输出到浏览器的HTML页面编码设置错误,依然会出现乱码。 #...

    PHP附件下载中文名称乱码的解决方法

    本文详细介绍了PHP附件下载时中文名称乱码问题的解决方法,并深入分析了乱码产生的原因以及如何通过编码转换来解决。 中文乱码问题的产生主要是由于客户端和服务器端的编码方式不一致导致。在Web开发中,我们通常...

Global site tag (gtag.js) - Google Analytics