今天早上我老闆問了我一個問題:為何他在IE裡面下載SugarCRM裡面有中文檔名的檔案,存檔時帶出的檔名變成亂碼?

我直覺的覺得是IE和FF對於header的解釋不同的緣故,因為上禮拜我把SugarCRM裝好後有試過,在FF中是正常的~
為了證實我的想法,我把SugarCRM的download.php翻出來看了一下,果然發現一段if else的結構證明我的想法沒錯,兩種瀏覽器對於檔名解碼的方式有不同的作法。
現在重點來了,怎麼做才是正確的?

開了MSN問了一下Kiang的意見,他給了一個提示:urlencode。
我試了幾種方式,發現在檔名編碼的部份,IE應該用urlencode,FF應該用mb_encode_mimeheader的QP編碼方式來處理檔名的部份。

因此,既然可以完成檔名的處理,我接著觀察SugarCRM處理檔案的方式。
很顯然的,他把上傳後的檔案「暗號化」,然後以此「暗號」查詢資料庫,取得原始的檔名,而上述的download.php則是統一的取檔窗口,這樣的方式便可以避免去處理Windows的檔案系統編碼的問題。

我認為這是個很好的方式,記起來以免忘記~
arrow
arrow
    全站熱搜

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