[請益] 請問如何用PHP Detect OS 的編碼

看板PHP作者 (黃色獅子頭)時間12年前 (2013/09/09 16:14), 編輯推噓0(0015)
留言15則, 2人參與, 最新討論串1/1
小弟在做檔案上傳程式 move_uploaded_file($file_tmp_name, mb_convert_encoding($pictureTempPath . "\\" .$file_name , "Big5" "UTF-8")); 網頁編碼固定UTF-8 現在遇到問題, 因為現在用win 開發,以後會上到Linux 主機跑, 我想要用PHP 偵測 目前主機的FileSystem CherSet,不要寫死Big5, 找很久都找不到, 試過 mb_internal_encoding() , 她回傳ISO-8859-1,而不是big5, 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.63.96.2 ※ 編輯: jackcomtw 來自: 210.63.96.2 (09/09 16:18)

09/09 21:32, , 1F
不要存原始檔名, 另外存對應表.
09/09 21:32, 1F

09/10 02:18, , 2F
UNIX-like系統的FS是沒有charset的
09/10 02:18, 2F

09/10 02:19, , 3F
filename都是binary base 不過現在大多的系統也都是
09/10 02:19, 3F

09/10 02:20, , 4F
用UTF-8當系統編碼就是
09/10 02:20, 4F

09/10 02:26, , 5F
主要還是PHP跟FS之間的互動才是重點
09/10 02:26, 5F

09/10 02:27, , 6F
像NTFS檔名用的是UTF-16 但Windows版PHP操作檔案時
09/10 02:27, 6F

09/10 02:30, , 7F
函數部分則要看WINDOWS系統
09/10 02:30, 7F

09/10 02:31, , 8F
上面UNIX-like的FS部分修正一下 應該說ext家族的FS才對
09/10 02:31, 8F

09/10 02:32, , 9F
而linux版的PHP則是用UTF-8去處理檔案
09/10 02:32, 9F

09/10 02:33, , 10F
所以很簡單的來說 只有WIN上的PHP要擔心檔案編碼問題
09/10 02:33, 10F

09/10 02:33, , 11F
因為非WIN上的php都是用UTF-8處理
09/10 02:33, 11F

09/10 02:33, , 12F
不過最佳方法就同樓上所說的 用對應表的方式最好
09/10 02:33, 12F

09/10 02:34, , 13F
還可以避免檔名重複
09/10 02:34, 13F

09/10 02:35, , 14F
有興趣可以參考這篇
09/10 02:35, 14F
謝謝danny大, 感激不盡 ※ 編輯: jackcomtw 來自: 210.63.96.2 (09/10 12:44)
文章代碼(AID): #1IBODsmb (PHP)
文章代碼(AID): #1IBODsmb (PHP)