作者tper8042 (tper8042)
看板PHP
標題[請益] 關於解壓縮後檔名的亂碼問題
時間Fri Jan 18 21:21:10 2013
請教各位先進
小弟最近寫了一支讓使用者上傳檔案的程式(若為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