經測試,在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/http://www.cnblogs.com/") & "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中文檔名超長的下載問題
相關文章
- Excel下載的檔名問題Excel
- 關於 maatwebsite/excel 匯出不能識別中文檔名稱的問題WebExcel
- 關於檔案上傳下載的編碼問題
- 關於iis伺服器不能下載.cfg檔案的問題伺服器
- 關於FileDownloader檔案長度校驗的問題
- ASP.NET利用HttpHandler實現多副檔名檔案下載ASP.NETHTTP
- 求助:關於系統超時的問題
- 超級簡單:在asp.net中限制下載檔案的訪問許可權ASP.NET訪問許可權
- 關於中文亂碼問題(總結)
- 關於JDON UTF版本中文編碼的問題
- 關於JSP預編譯的中文問題JS編譯
- asp.net中引入外部js檔案的中文亂碼問題ASP.NETJS
- 關於ubuntu下hosts修改的問題Ubuntu
- Mac操作指南:如何解決下載檔名出現亂碼問題?Mac
- 關於延遲載入,立即載入的問題
- 關於JBossWebLoader類載入的問題Web
- jsp、servlet關於中文問題再談JSServlet
- sra檔案下載及解析的問題
- 關於mysql和jsp的中文問題~謝謝MySqlJS
- 關於Java中文問題的幾條分析原則Java
- ASP.NET 檔案下載ASP.NET
- 關於一個歸檔問題?
- 關於SAX解析xml檔案的問題XML
- 關於解壓zip檔案的問題
- win10 下關於redis的相關問題Win10Redis
- 關於MAC非官方下載的軟體無法開啟的問題Mac
- LINUX 下讓Tomcat支援中文路徑名和中文檔名LinuxTomcat
- LINUX下掛載U盤,中文亂碼的問題Linux
- jboss下mysql的中文問題MySql
- 關於 apache + tomcat 的負載均衡問題ApacheTomcat負載
- 備忘錄--關於硬碟掛載的問題硬碟
- Web 開發中的檔案下載問題Web
- 關於log4j.jar導致的中文問題JAR
- .Net(ASP.net)--中文編碼問題ASP.NET
- 關於JDK1.2的JDBC中文問題的解決 (轉)JDKJDBC
- 關於python操作帶有中文檔名報錯的解決辦法Python
- 關於oracle檔案許可權的問題Oracle
- 關於檔案上傳的問題smartUpload