昨天下了 PHP6-dev 來試試看,剛剛裝上去,測試了幾種檔案讀寫狀況,其實在 php.ini 中需要設定的只有底下兩行:
  • unicode.semantics = on
  • unicode.filesystem_encoding = BIG5
第一行 unicode.semantics = on 表示要啟動 Unicode 相關的功能。
第二行 unicode.filesystem_encoding = BIG5 表示指定檔案系統的編碼,這裡我使用 BIG5 是遷就 Windows 系統,如果是在 Linux / FreeBSD 上,應該可以設成 UTF-8。
有個地方要注意:
  • 除了中文,其他的編碼文字不能出現在檔案名稱中,否則會無法操作檔案。
  • 檔案名稱的部份雖然可以用中文,但是寫入檔案時的資料如果含有其他國家的文字,會跑出 Notice ,可以在 fwrite 前加上 @ 來抑制。
  • 載入 PHP 的方式若是用 Apache Handler,在某些常數名稱上會出現錯誤,建議使用 CGI 模式載入 PHP。

這裡有兩份文件,可以參考看看:文件一文件二
其他如傳遞參數等狀況,我有空在測試看看。
創作者介紹

失落的技術

HACGIS 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • 遊手好閒的石頭成
  • 說起來, PHP6 還是沒有辦法令 windows 系統辨識 php 為 unicode 軟體啊。或者,這是 Apache 的問題...

    如果 windows 系統認為 PHP6 是一套 unicode 軟體的話,讀寫檔案系統時,就會用 unicode 去搜尋檔案表,而不是用 ansi (big5) 。現況則是 windows 系統認為 php 是一套 ansi 軟體,所以一定用 ansi 碼搜尋檔案表。
  • HACGIS
  • 或許是,不過我個人猜測認為是 ICU 3.6 並沒有呼叫正確的 WinAPI。

找更多相關文章與討論