中文檔名下載會壞掉的原因
HTTP 標頭只准英文字元,中文檔名要按 RFC 5987 編碼;中文環境的系統必測中文檔名上傳下載,英文環境測不出來。
定義:HTTP 標頭(伺服器告訴瀏覽器「這個檔案叫什麼名字」的欄位)規定只能放英文字元,中文檔名直接塞進去就會下載失敗或變亂碼。國際標準 RFC 5987 定義了正確的編碼方式。
當時的症狀 vs 真正的原因
症狀:檔案管理功能上線後,英文檔名的檔案下載都正常,中文檔名的會失敗或變亂碼。
真正的原因:檔名放在 HTTP 標頭裡傳給瀏覽器,而標頭欄位只准英文字元。中文要先按 RFC 5987 的方式編碼再放。
教訓
只要系統會處理檔案上傳下載、而使用者是中文環境,「中文檔名」就必須是明確的測試項目。這種問題 AI 一修就好,但沒人提醒它就常會漏掉——因為英文環境測不出來。
驗收清單
- 上傳中文檔名的檔案→下載回來,名字對不對。
- 瀏覽器直接開啟該檔案,會不會亂碼。