解決 CodeIgniter force_download 在 Windows 下 IE 中文檔名亂碼問題

由於 windows 主要編碼為Big5,所以force_download在ie下載遇到中文時,會出現亂碼,因此在執行 force_download($name, $data);之前需先將$name的編碼轉成big5,才不會出現亂碼。






但又希望程式自動判別客戶端是使用哪個作業系統,而不必手動改來改去,因此可以透過以下php程式碼進行判別,並重新轉碼。



if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'){
    //為windows 需要轉為 big5編碼
    $name = mb_convert_encoding($name,"big5","utf8");
}
   
force_download($name, $data);


參考資料:http://www.php.net/manual/en/function.php-uname.php

沒有留言:

張貼留言