Re: [請益] 存取 Windows 上的中文檔案

看板PHP作者 (任性)時間14年前 (2010/03/27 01:16), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串2/6 (看更多)
※ 引述《danny0838 (道可道非常道)》之銘言: : 因為某些因素,小的有用 php 存取 windows 系統上中文檔名檔案的需求.. : 我知道繁中版 windows 的檔名是用 big5 編碼, : 假設一個檔案名為 "測試.txt",而 php 程式是 UTF-8 編碼, : 用 iconv("UTF-8","big5//IGNORE","測試.txt") 即可讀到該檔案。 : 但如果檔名包含 unicode 呢? : 比如 "消化酶.txt"(酉每是 unicode 字元),它會被編為什麼碼? PHP 讀不到.. : 第二個問題是,若用 scandir 之類的方式掃資料夾, : 純 big5 檔名會以 big5 格式傳回,可做進一步應用; : 但夾有 unicode 的檔案傳回值一部分會變成 ? (UTF-8 無法對應到 big5 者), : 造成路徑錯誤,掃到檔案卻無法進一步處理。 : 所以,要如何用 php 存取 windows 系統下,檔名夾有 unicode 字元的檔案呢? 這個問題其實有難度, 在 Windows 下面如果用 PHP 沒辦法解決您的問題。 PHP 在 Windows 下面,如果是取回檔案名稱的話,在 CP950 以外的字都會變成 變成一個 "?" ,也就是讀不到... 不過 Windows 自己其實也有問題 (這是題外話) 你可以下個指令檢驗一下, 假設你有個目錄,裡面有消化酶.txt ,您用 dir > test.txt ,然後把檔案打開, 會發現那個 "酶"也變成了 "?" 。 目前有比較簡單的兩個解法: 1. 把檔案放到 Linux 去 (你可以用 ftp, 我用 FileZilla 3.3.2) http://www.flickr.com/photos/roga/4464468653/sizes/o/ 然後改個檔名,建個 table 來對應一下,之後再下載到 windows 。 2. 架一下 SAMBA ,連線網路磁碟暫解。 -- The Internet: where men are men, women are men, and children are FBI agents. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.104.63

03/27 13:53, , 1F
囧...php取不到windows的正確檔名是windows的問題還php?
03/27 13:53, 1F

03/27 13:55, , 2F
java讀得到,ajax給utf8檔名也能正確開檔XD
03/27 13:55, 2F

03/27 13:56, , 3F
2我看不太懂,能麻煩大大說詳細一點嗎@@
03/27 13:56, 3F

03/27 13:58, , 4F
"dir > test.txt ,然後把檔案打開..."這段不太懂...我
03/27 13:58, 4F

03/27 13:59, , 5F
用cmd模式輸入dir可以正確顯示出消化酶.txt啊
03/27 13:59, 5F

03/27 16:17, , 6F
重點是PHP不是原生Unicode程式,在這方面一定會有問題吧
03/27 16:17, 6F
※ 編輯: roga 來自: 61.220.104.63 (03/27 23:15)

03/27 23:28, , 7F
是OS的問題, 不關php的事
03/27 23:28, 7F
文章代碼(AID): #1BhElOdK (PHP)
討論串 (同標題文章)
文章代碼(AID): #1BhElOdK (PHP)