Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

IIS 下載中文檔名失敗:2/4 個中文字元觸發 Bug 之註冊表修復

編輯:關於伺服器

IIS 5.0/6.0 在處理中文檔名下載時存在已知 Bug:**檔名為 2 或 4 個中文字元時無法下載**,1、3、5 個字元則正常。根因在於 URL 掃描邏輯對 DBCS (雙位元組字元集) 邊界判斷錯誤。解決方法為修改註冊表關閉 DBCS 優化,或客戶端 IE 關閉「總是以 UTF-8 發送 URL」。

環境

  • 中文版 Windows 2000 Advanced Server SP4
  • IIS 5.0 (同樣適用 IIS 6.0)

現象重現

檔名中文字元數下載結果
中.doc1✅ 正常
中文.doc2❌ 失敗 (404/找不到檔案)
中文檔.doc3✅ 正常
中文檔案.doc4❌ 失敗
中文檔案名.doc5✅ 正常

伺服器端修復:註冊表關閉 FavorDbcs

  1. 執行 regedit。
  2. 定位至:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Inetinfo\Parameters\
  3. 新增/修改 DWORD 值:
    名稱:FavorDbcs
    數值:0 (預設為 1 啟用)
  4. 重新啟動 IIS:iisreset 或服務管理員重啟「WWW 發布服務」。

原理:FavorDbcs=1 讓 IIS 優先嘗試將 URL 解釋為 DBCS 字元序列,導致 2/4 字元時邊界計算錯誤;設為 0 強制使用標準 UTF-8/ANSI 路徑解析。

客戶端繞過:IE 關閉「總是以 UTF-8 發送 URL」

  1. IE →「工具」→「網際網路選項」→「進階」分頁。
  2. 捲動至「瀏覽」區段,取消勾選 總是以 UTF-8 發送 URL。
  3. 套用並重啟 IE。

此設定讓 IE 以系統預設代碼頁 (CP950/Big5) 發送 URL,繞過伺服器端 DBCS 解析邏輯。

驗證

修復後重新嘗試下載 2/4 中文字元檔名,應可正常下載並提示正確檔名。

補充說明

  • 此 Bug 存在於 IIS 5.0/6.0,IIS 7.0+ (Windows Server 2008+) 已修復,無需此設定。
  • 若伺服器已升級至 IIS 7+,請勿設定 FavorDbcs=0,可能導致其他 URL 解析異常。
  • 現代 Web 應用建議:檔名儲存使用 UUID/雜湊值,下載時透過 Content-Disposition: attachment; filename*=UTF-8''%E4%B8%AD%E6%96%87.doc (RFC 5987) 指定中文檔名,徹底規避編碼問題。

針對舊版 IIS 環境,註冊表修改 FavorDbcs=0 為最直接有效的伺服器端修復。

Copyright © Windows教程網 All Rights Reserved