[請益] 透過php下載的檔案編碼不正常(xoops)

看板PHP作者 (亞欣)時間15年前 (2010/05/18 17:25), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
各位好 先提供我的server系統環境: windows server 2003 IIS6.0 php5 mysql5.0 另外我是使用xoops套件 2.0.18 UTF-8版跟cbb3.08 xoops剛架設起來時功能皆為正常,並平安的運作了一段時間 但在幾天前,有使用者回報,討論區下載的檔案會發生異常 (那時才剛把Server做安全性更新 不知跟此是否有關) 打開下載的word檔案 會出現叫你選擇檔案編碼的視窗 選完編碼後整份文件依舊是亂碼 但在Server上的檔案是正常的 所以個人判斷可能是透過程式下載的關係 測試後發現上傳的檔案編碼是ansi 結果下載回來會變成utf8格式 把檔案用notepad++開啟,重新編譯成ansi或utf8無bom格式,檔案就能正常開啟 直接上傳utf8編碼的txt測試也是正常 google了很久 找到一些類似的情況 本以為是討論區中的php網頁本身含有bom或是include到含有bom的網頁 或是哪邊有不知名的空白 試著把有可能include到的php檔都存成無bom utf8 但都無效 那最有可能的地方我想可能是程式裡面寫header的地方有問題 header('Content-Type: '.$mimetype); header('Expires: 0'); if (preg_match("/MSIE ([0-9]\.[0-9]{1,2})/", $HTTP_USER_AGENT)) { // 瀏覽器IE header('Content-Disposition: attachment; filename="'.urlencode($file_display).'"'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); } else { header('Content-Disposition: attachment; filename="'.urlencode($file_display).'"'); header('Pragma: no-cache'); } header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: binary"); 不過google後找不出有比較怪的地方 然後最怪的是此程式在xp環境下卻能正常 囧 server 2003則是突然就不能運作了 xp跟server除了IIS版本不同外其他皆相同 附上原始碼:http://sites.google.com/site/fet0124/fet 程式是xoops cbb 套件中處理下載檔案的程式 不知道只看這個是否會有不周全的地方 @@ 問題寫的落落長 想請較有經驗的版友可以幫我解惑 感激不盡!! -- 已經處理兩天了還是無法解決 QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.236.80 ※ 編輯: fet0124 來自: 203.73.236.80 (05/18 17:35)

08/02 18:59, , 1F
可以參考 news 的下載版本
08/02 18:59, 1F
文章代碼(AID): #1BybpyPm (PHP)
文章代碼(AID): #1BybpyPm (PHP)