asp.net 文件下载 文件名称乱码 处理~~

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO;

using ElementLibrary.BLL; using ElementLibrary.MODEL; using System.Text; /*  * LiuH  * Descr:下载处理DownLoadFile.ashx  * Addtime:2014/8/26  * LastModifyTime:2014/8/27  */ namespace ElementLibrary.Web.Action {     /// <summary>     ///DownLoadFile 的摘要描述     /// </summary>     public class DownLoadFile : IHttpHandler     {         ElementDetailBLL elementDetailBLL = new ElementDetailBLL();         public void ProcessRequest(HttpContext context)         {             string strFunId = context.Request.QueryString["id"].ToString();//获取方法id(元件ID)             MODEL.ElementDetailInfo elementDetailInfo = elementDetailBLL.GetAllContent(strFunId);//客户端保存的文件名             string fileName = elementDetailInfo.FileName;             string strFilePath = elementDetailInfo.FilePath;             string filePath = context.Server.MapPath(strFilePath);//路径             FileInfo fileInfo = new FileInfo(filePath);             context.Response.Clear();             context.Response.ClearContent();             context.Response.ClearHeaders();            //解决文件名乱码(LiuH AddTime:2014/8/28)             if (context.Request.UserAgent.Contains("MSIE") || context.Request.UserAgent.Contains("msie"))             {                 // 如果客户端使用 Microsoft Internet Explorer,则需要编码                  fileName = ToHexString(fileName);             }             context.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);             context.Response.AddHeader("Content-Length", fileInfo.Length.ToString());             context.Response.AddHeader("Content-Transfer-Encoding", "binary");             context.Response.ContentType = "application/octet-stream";             context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");             context.Response.WriteFile(fileInfo.FullName);             context.Response.Flush();             //fileInfo.Delete();             context.Response.End();         }

/// <summary>         /// 为字符串中的非英文字符编码         /// </summary>         /// <param name="s"></param>         /// <returns></returns>         public static string ToHexString(string s)         {             char[] chars = s.ToCharArray();             StringBuilder builder = new StringBuilder();             for (int index = 0; index < chars.Length; index++)             {                 bool needToEncode = NeedToEncode(chars[index]);                 if (needToEncode)                 {                     string encodedString = ToHexString(chars[index]);                     builder.Append(encodedString);                 }                 else                 {                     builder.Append(chars[index]);                 }             }

return builder.ToString();         }

/// <summary>         ///指定 一个字符是否应该被编码         /// </summary>         /// <param name="chr"></param>         /// <returns></returns>         private static bool NeedToEncode(char chr)         {             string reservedChars = "$-_.+!*‘(),@=&";

if (chr > 127)                 return true;             if (char.IsLetterOrDigit(chr) || reservedChars.IndexOf(chr) >= 0)                 return false;

return true;         }

/// <summary>         /// 为非英文字符串编码         /// </summary>         /// <param name="chr"></param>         /// <returns></returns>         private static string ToHexString(char chr)         {             UTF8Encoding utf8 = new UTF8Encoding();             byte[] encodedBytes = utf8.GetBytes(chr.ToString());             StringBuilder builder = new StringBuilder();             for (int index = 0; index < encodedBytes.Length; index++)             {                 builder.AppendFormat("%{0}", Convert.ToString(encodedBytes[index], 16));             }             return builder.ToString();         }

public bool IsReusable         {             get             {                 return false;             }         }     } }

时间: 2024-09-28 18:41:21

asp.net 文件下载 文件名称乱码 处理~~的相关文章

java 文件下载文件名称乱码

乱码的原因是什么?每个浏览器的编码不一样,火狐采用的是base64.ie和谷歌采用的是url编码 所以我们在设置响应头的时候Content-Type getServletContext().getMineType(filename);Content-Disposition accachment;filename=编码后的filename url编码name = URLEncoder.encode(filename, "UTF-8"); base64编码/** 传入文件的名称,进行Bas

swfupload组件后台获取中文文件名称乱码的问题解决

   问题描写叙述:用swfupload上传文件,含有中文名称的文件上传会报错,我用的是获取FileItem对象,用FileItem对象的getName()方法获取文件名会乱码,试着用request.setCharacterEncoding("UTF-8")及fileName= new String(fileName.getBytes("iso-8859-1";),"UTF-8"); 都不能够,用FileItem对象.getString(&quo

linux中删除文件名称乱码

在最近的操作中发现一些上传的文件有乱码,更改几次都无法正常转换到中文.下面给出正确的解决方案: 使用 ls -i 或者 ls -inum 查找出文件id号(红色字体) [[email protected] home]# ls -i260615 epel-release-latest-6.noarch.rpm 273780 test.txt[[email protected] home]# ls -inum273780 test.txt, 260615 epel-release-latest-6.

jxl导出EXCEL文件名称乱码

开始导出excle时名称是乱码的,加上下面的就可以了, String FileNam="xx医院_xxxx_xx_xx.xls"; res.setCharacterEncoding("UTF-8"); res.setContentType("application/octet-stream"); String fileName_1 = new String(FileName.getBytes("UTF-8"), "i

Java web中不同浏览器间导出Excel文件名称乱码问题解决方案

问题描述: 对于不同浏览器存在对中文编码格式问题,从而在导出Excel文件时,中文文件名出现乱码的情况,即在程序中给要导出的文件指定一个中文名字时,在浏览器上出现的下载框中的文件名出现了乱码,解决如下: 解决方案: [java] view plain copy Date dt=new Date();//如果不需要格式,可直接用dt,dt就是当前系统时间 DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//设置显示格

asp.net 文件下载 解决文件名乱码

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using ElementLibrary.BLL; using ElementLibrary.MODEL; using System.Text; /* * LiuH * Descr:下载处理DownLoadFile.ashx * Addtime:2014/8/26 * LastModifyTim

U盘文件名称变成乱码的解决方法

不知道小伙伴们在使用U盘的时候有没有遇到过这样的情况,打开U盘后,里面的文件名称变成乱码,点击删除时,弹出提示无法删除,这是神马情况?我们需要如何来解决呢? 小编现在教你一个解决乱码问题的方法: U盘文件名称乱码 点击”开始——运行“,输入chkdsk H:/f(H为U盘盘符),该命令会自动检查出U盘出现的很多问题,如果是乱码问题,可能会有提示修改文件夹的文件名,此时输入Y选择是,如果U盘中很多出现乱码的文件夹,那么就要经过多次选择是,操作完毕后,打开U盘,你会发现里面文件夹的文件名正常了. 出

Qt中QFtp获取带有中文的文件名称出现乱码的解决方法(比较巧妙,toLatin1压缩掉了QString自动给每个英文字符加上的那些00字节)

今天研究了一下QFtp这个类,发现访问得到的文件名称中一旦出现中文,不管怎么转换编码格式,最终显示出来的始终都是乱码.于是我深入地对这一现象进行了研究.这里先简单介绍一下我的分析过程: FTP服务器在收到List指令后,会把当前文件夹的所有项目(包括文件夹和文件的名称,大小,时间,所有者等相关信息)列举出来并返回给FTP客户端.曾经在网上看到有人说过这样一句话:“ftp 在编码问题上相当笨,笨到对编码一无所知”.确实,多数FTP服务器在返回这些名称时采用的文字编码格式为ANSI.这是一个不太好的

项目中出现paxheader文件夹,里面的文件名称是乱码,是不是病毒?

最近从SVN上Check下来的一个项目中包含paxheader文件夹,里面的文件名称是乱码,是不是病毒呢? 经过网上一番搜索,结合公司有人使用Linux系统的情况,总结可能的原因是代码之前是在Linux系统下写的,可能是在Linux系统下打成tar.gz包发到Windows系统下然后解压出来 的,由于tar.gz的一些特性Windows下的解压软件支持的不好,所以才形成了paxheader文件夹. 参考: http://lists.freebsd.org/pipermail/freebsd-cu