关于asp.net中文文件名超长的下载问题
来源:互联网 发布:数据统计有什么用 编辑:程序博客网 时间:2024/05/17 08:24
经测试,在header中的filename 中文只能18个,英文165个
按中文一个在UTF8里是9个字节( System.Text.UnicodeEncoding.UTF8.GetByteCount()方法获取每个中文为3个字符),应该是18*9=162<165)
因此在长中文文件名下载时做以下处理:
当文件名GetByteCount大于57时(没有判断中英文混合的情况)则截取文件名
Dim FullFileName As String = Server.MapPath("qbuttom3.aspx/../../") & "temp/" & FileName
If System.IO.File.Exists(FullFileName) = True Then
Dim strLenth As Integer = System.Text.UnicodeEncoding.UTF8.GetByteCount(ModName)
If strLenth > 57 Then
ModName = ModName.Substring(0, 17) + "_.xls"
End If
Response.Clear()
Response.ContentType = "application/vnd.ms_excel"
Response.AppendHeader("Content-Disposition", "attachment; filename=" & Server.UrlEncode(ModName))
Response.Flush()
Response.WriteFile(FullFileName)
End If
注:
许多情况下当程序采用了Server.HTMLEncode 和 Server.URLEncode 先对中文进行过编码以后,系统依然显示乱码,根据微软的解释,这种情况跟IIS有关,微软提供的原因是未打Pack3的IIS 假定每个字符两个字节,而某些 UTF8 字符使用三个字节。这样,所创建的缓冲区太小,无法容纳这些字节,导致产生乱码,解决方法就是给IIS打Pack3
下载地址如下 :
立即下载 Q249831_w2k_sp3_x86_EN.exe
中文(简体):
立即下载 Q249831_w2k_sp3_x86_CN.exe
- 关于asp.net中文文件名超长的下载问题
- 下载文件时的中文文件名问题(asp.net)
- 解决C# ASP .NET下载出现中文文件名乱码的问题
- 解决C#ASP.NET下载出现中文文件名乱码的问题
- ASP.NET实现下载功能的中文文件名乱码处理
- ASP.NET实现下载功能的中文文件名乱码处理
- ASP.NET实现下载功能的中文文件名乱码处理
- ASP.NET实现下载功能的中文文件名乱码处理
- ASP.NET实现下载功能的中文文件名乱码处理
- ASP.NET实现下载功能的中文文件名乱码处理
- ASP.NET实现下载的中文文件名乱码处理
- ASP.NET实现下载功能的中文文件名乱码处理
- ASP.NET实现下载的中文文件名乱码处理
- ASP.NET实现下载时的中文文件名乱码处理
- asp.net文件下载,中文文件名乱码
- asp.net下载 中文文件名乱码处理
- .net中 下载中文文件名的乱码问题
- 遭遇Asp.Net长文件名下载的问题和解决办法
- [我的ASP.net学习历程]DataAdapter操作之(二)
- Blog日渐普及 成为带宽“黑洞”?
- 快速配置weblogic8.X的应用目录
- [我的ASP.net学习历程]DataBase Settion(3)
- 使用 Microsoft SQL Server 2000 各种版本或组件而必须安装的操作系统
- 关于asp.net中文文件名超长的下载问题
- [我的ASP.net学习历程]DataBase Settion(4)
- [我的ASP.net学习历程]DataBase Settion(5)
- [我的ASP.net学习历程]DataBase Settion(6)
- 微软bug导致航空无线电系统崩溃3小时
- [我的ASP.net学习历程]DataBase Settion(7)
- 《水煮西游记》之三——天地合谋篇
- -- 序 --
- oledb