精華區beta PHP 關於我們 聯絡資訊
請教各位先進 小弟最近寫了一支讓使用者上傳檔案的程式(若為zip檔則自動解壓縮) (解壓縮的路徑跟上傳非.zip檔案的目錄皆為./upload/) 假設目錄結構如下 |- list.php |- do-upload.php |- upload/ 可是windows壓縮的檔名編碼都是big5, 導致在檔案清單(list.php)中,沒辦法同時顯示utf-8跟big-5編碼的檔案名稱 目前想了一些辦法,不過好像都不可行 1. 上傳非.zip檔時將檔名轉成big5-> 目前已經有很多已存的utf-8檔案,且日後output時都要iconv 2. 上傳zip檔時將檔名轉成utf-8-> 無法得知使用者是不是在windows下壓縮的檔案 3. 輸出時轉換-> 小弟不知道有沒有辦法判斷哪個檔名是哪個編碼的辦法...orz 請問有沒有人能提供比較一般化或一勞永逸的做法呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.215.86
tyf99:為什麼要轉成big5卻不轉成utf-8? 01/18 22:35
tyf99:windows只有UI是big5,ntfs使用的編碼仍是unicode 01/18 22:36
tyf99:找一下解zip的開源軟體,應該有支援多語系檔名的解壓 01/18 22:38
原因有幾點: 1. php的ZipArchive class跟pclzip似乎都沒辦法在extract的同時轉成utf-8 2. 無法判斷使用者上傳的壓縮檔是不是windows壓出來的 p.s 我是要在server端解壓縮 ※ 編輯: tper8042 來自: 114.33.215.86 (01/18 23:13)
tper8042:解決了 一筆一筆mb_detect_encoding然後iconv->extract 01/19 01:27