web项目中使用火狐浏览器导出文件时文件名乱码

本文介绍了一种解决文件下载时文件名出现乱码的方法。通过判断浏览器类型,对非Firefox浏览器的文件名进行UTF-8编码处理,以确保文件名正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、原因
主要是编码的问题。
在设置文件名称前,加上判断。
判断下载者使用的浏览器,
如果不是火狐浏览器,则对文件名称进行UTF8编码;
如果是火狐浏览器,则不对文件名称进行操作.

2、方法
/// <summary>
/// 下载文件
/// </summary>
/// <param name="s_path"></param>
public static void downloadfile(string sFilePath)
{
    System.IO.FileInfo file = new System.IO.FileInfo(sFilePath);
    string sFileName = file.Name;
    //如果不是或火狐浏览器,则对文件名称进行UTF8编码
    if (HttpContext.Current.Request.ServerVariables["http_user_agent"].ToLower().IndexOf("firefox") == -1)
    {
        sFileName = System.Web.HttpUtility.UrlEncode(file.Name, System.Text.Encoding.UTF8);
    }
    HttpContext.Current.Response.ContentType = "application/ms-download";
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.AddHeader("Content-Type", "application/octet-stream");
    HttpContext.Current.Response.Charset = "utf-8";
    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + sFileName);
    HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
    HttpContext.Current.Response.WriteFile(file.FullName);
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.Clear();
    //此句注释,如果执行了此代码,则整个执行结束(不会执行下载文件方法后面的代码)
    //HttpContext.Current.Response.End();
}

转载于:https://www.cnblogs.com/masonblog/p/8628637.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值