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

文件下载,环境移到linux乱码问题

阅读更多
客户端
			function downLoad(tdFileId){
					var paySaveFileName = document.getElementById(tdFileId).paySaveFileName;
					var payUploadFileName = document.getElementById(tdFileId).payUploadFileName;
					payUploadFileName = escape(encodeURIComponent(payUploadFileName));
					if(paySaveFileName!=''&&isExist(paySaveFileName)){
						window.location.href="<%=URL%>orderInfo/orderDownLoad.action?downFileName="+payUploadFileName+"&ext2="+paySaveFileName;
					}else{
						 alert("付款凭证不存在,请重新上传!");
					}
			}

通过escape(encodeURIComponent(payUploadFileName)),encodeURIComponent()函数可把字符串作为 URI 组件进行编码,escape()函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串编码。

struts2配置文件:
	<!-- 下载报告的Action定义 -->
		<action name="orderDownLoad" class="orderInfoAction"> 
			
			<result name="success" type="streamx"> 
			
			 <param name="contentType">text/plain</param>
			
			<param name="inputName">inputStream</param> 
			
			<!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性 
			
			对应action类中的方法 getDownloadFileName() --> 
			
			<param name="contentDisposition">attachment;filename="${downloadFileName}"</param> 
			
			<param name="bufferSize">5242880</param> 
			
			</result> 
			
			</action> 


java代码:
		public String getDownloadFileName() throws Exception {
			String downFileName =request.getParameter("downFileName");
			downFileName = URLDecoder.decode(downFileName, "UTF-8");
			response.setHeader("Content-Disposition", "attachment; filename="+new String(downFileName.getBytes("gb2312"),"iso-8859-1")); 
			try {
				// 一定要这样处理下,转换成ISO8859方式的西欧字符集。
				downFileName = new String(downFileName.getBytes(), "ISO8859-1");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}

			return downFileName;
		}

其中downFileName = URLDecoder.decode(downFileName, "UTF-8");是对转义过的汉字重新转义回汉字。
这里注意,开始部署在windows下,没有 response.setHeader("Content-Disposition", "attachment; filename="+new String(downFileName.getBytes("gb2312"),"iso-8859-1"));, 这段代码,后来部署到linux上,下载文件的时候就会乱码了,于是网上搜了下,必须设置下header才能避免不乱码。












分享到:
评论

相关推荐

    linux环境中文字体安装资源

    在Linux环境中,中文汉字的显示可能会遇到乱码的问题,这主要是因为系统默认缺少支持中文的字体。本资源包提供了解决这一问题的方法,通过安装特定的中文字体,可以确保在Linux环境下正确显示中文字符。 首先,我们...

    KingCMS企业版(PHP)2009 正式版 V6.0.813.rar

    除了\images、\template和\upfiles文件夹,config.php和数据库(SQLite的数据库)文件,其他文件都移到old目录备份; 把新的文件(除\images和\template文件夹,config.php和INSTALL.php文件外)上传到根目录; ...

    Avalonia官网文档

    3. **完全开放源码**:Avalonia项目在GitHub上公开,由一个活跃的社区维护,开发者可以直接参与其开发,提出问题,提交修复和增强功能。 4. **独立于.NET Framework**:Avalonia可以与.NET Core或.NET 5/6一起使用...

    解决securecrt中sql语句上下键显示

    这种情况在Windows系统下尤其常见,而在Linux环境下,可以通过安装`rlwrap`程序来解决这一问题。 #### SecureCRT介绍 SecureCRT是一款功能强大的SSH客户端,支持多种协议,包括SSH、Telnet、Serial等,广泛应用于...

    wrl viewer

    如果WRL Viewer支持在Web环境中运行,这些文件可能是为了将3D模型集成到网页中的必要组件。 7. 3D渲染技术:WRL Viewer的实现离不开3D渲染技术,包括硬件加速、光照计算、纹理映射等。这些技术让3D模型看起来更加...

    VI 编辑器详解—鸟哥

    - 如果遇到中文乱码问题,可以尝试使用`:set encoding=utf8`命令重新指定文件编码。 ##### 4.2 DOS与Linux的断行字符 - DOS系统使用`CR+LF`作为换行符,而Linux使用`LF`。 - 可以使用`dos2unix`和`unix2dos`工具来...

    易语言程序免安装版下载

    6) 修改MYSQL支持库跨静态编译的EXE和DLL传递连接句柄和记录集句柄无效的BUG(改动较大,可能会产生兼容性问题,我们已经仔细测试,也请使用到此库的用户帮助我们多多测试,以便及早发现问题,谢谢) 7) 其它修改 ...

    0x04.第四课 Meterpreter的介绍与使用.pdf

    此外,还有一些实用的命令可以帮助用户更好地利用Meterpreter的功能,例如通过`shell`命令可以直接进入交互式命令执行界面,解决中文乱码问题可以通过输入`chcp 65001`来设置正确的字符编码。 #### 七、总结 ...

    网址网站导航整站源码

    *解决个别linux环境下,网址导航首页无法生成的问题 *修复删除所有数据后“查看所有分类”不能显示的问题 V1.12 升级补丁包 (2009年7月26日发布) *优化静态页生成功能,提高生成速度,解决php5环境下生成...

    jsp入门小知识

    1. **页面加载缓慢**:检查是否有大量复杂的Java逻辑嵌入页面中,尝试将这部分逻辑移到Servlet或其他组件中处理。 2. **编码问题**:确保所有文件的编码格式一致,避免乱码问题。 3. **路径问题**:注意资源文件(如...

    最新版114啦2010.9.23更新.rar

    *解决个别linux环境下,网址导航首页无法生成的问题 *修复删除所有数据后“查看所有分类”不能显示的问题 V1.12 升级补丁包 (2009年7月26日发布) *优化静态页生成功能,提高生成速度,解决php5环境下生成...

    Java学习笔记-个人整理的

    {5.2.1}将浮点数四舍五入到指定精度}{98}{subsection.5.2.1} {6}Exception}{99}{chapter.6} {6.1}\ttfamily try-catch}{99}{section.6.1} {6.2}\ttfamily finally}{100}{section.6.2} {6.3}\ttfamily throws}{...

Global site tag (gtag.js) - Google Analytics