作者Joxz (古銅色月亮)
看板PHP
標題[分享] 檔案上傳中文轉碼
時間Thu Dec 3 17:17:18 2009
上傳中文檔名的檔案似乎要先用iconv()轉碼才能夠上傳:
move_uploaded_file($_FILES["fileupload"]["tmp_name"],
"../upload/".iconv("utf-8","big5",$_FILES["fileupload"]["name"]))
然而,要刪除上傳的中文檔案也是要再轉碼一次:
unlink("../upload/".iconv("utf-8","big5",$_GET['upname']))
echo $_GET['upname']."<p>"; //顯示結果為正常檔名
echo iconv("utf-8","big5",$_GET['upname']); //顯示結果為亂碼
在此不禁有個疑問,以iconv()編碼過的檔名在資料夾開啟來都顯示正常,
這是因為系統本身會做編碼判讀的原因嗎~?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.32.57.244
→ nidgetgod:這是因為 OS 和 PHP 編碼不同的關係 12/03 17:56
→ Joxz:嗯..瞭解了~感謝~:) 12/04 01:38
→ finalodyssey:比較好的方式其實是分離...缺點少優點多 12/04 14:31
→ finalodyssey:原始檔名可以用unix時間戳記來命名 12/04 14:32
→ finalodyssey:然後將檔案名稱的檔名和副檔名分離後存於資料庫 12/04 14:33
→ finalodyssey:要下載時再取出來合成成原始檔名 12/04 14:33
→ finalodyssey:不過最主要還是看目的為何吧,要安全的話做法比較繁 12/04 14:37