最近在寫一些檔案處理的程式,不過由於客戶端是Windows加上IE,而我的開發環境是LAMP,自然就遇到一堆鬼問題…
這次遇到的是關於檔案的操作,在PHP有個move_uploaded_file Function,我當初開發好,在Linux下跑都沒問題,但到Windows下就會出現錯誤訊息,查了一下發現,原來還是在編碼的關係,真奇怪…Windows的編碼讓人覺得詭異一下UTF8一下又是Big5(應該是AN…詳細我忘了),因為我存檔的檔名有中文所以就會出現問題.
先來看一下Function用法:
將檔案從某某資料夾搬移到某某資料夾.
布林值 move_uploaded_file(來源檔案,目的檔案);
UTF8 轉 Big5
iconv(“utf8″,”big5″,”FileName”);
很簡單沒有很複雜,但複雜的是我只要在Windows的機器(XP)上遇到中文就會出問題,原因應該是Windows的系統還是使用非Unicode的編碼,所以我本來寫的都是UTF8,造成他無法辨認,雖然網頁顯示是正常,但是就無法將檔案搬移,解決方法,就是重新替檔案取名不要用中文,要不就是用iconv轉成Big5,但這樣會很麻煩,因為你的網頁或後端資料庫還是跑UTF8,所以光做這樣的轉換就會搞死人,建議在Windows下就把檔名重新命名成亂數吧…
還有在編寫網頁也改用Unicode吧…只是上次有看到報導Vista也不是全部都是Unicode…這真是個萬惡的深淵…
參考: