ホームページ  >  記事  >  バックエンド開発  >  クロスブラウザでのPHPダウンロードファイル名の中国語文字化け問題の解決方法

クロスブラウザでのPHPダウンロードファイル名の中国語文字化け問題の解決方法

WBOY
WBOYオリジナル
2016-07-25 09:03:011211ブラウズ
  1. $ua = $_SERVER["HTTP_USER_AGENT"];

  2. $filename = "中国語ファイル名.txt";

  3. $encoded_filename = urlencode($filename);
  4. $encoded_filename = str_replace("+", "%20", $encoded_filename);

  5. header('Content-Type: application/octet-stream') ;

  6. if (preg_match("/MSIE/", $ua)) {

  7. header('Content-Disposition:attachment; filename="' . $encoded_filename . '"');
  8. } else if (preg_match("/Firefox/", $ua)) {
  9. header('Content-Disposition:attachment; filename*="utf8''' . $filename . '"');
  10. } else {
  11. header ('Content-Disposition:attachment; filename="' . $filename . '"');
  12. }

  13. print 'ABC';

  14. ?>
コードをコピー

上記は、より一般的な解決策です(Xp+IE7では問題が発生すると言われていますが、未検証です)。

この問題は、CI-Excel-Generation-Library の使用時に発生しました。解決策:

  1. プライベート関数 set_headers() {

  2. $ua = $_SERVER["HTTP_USER_AGENT"];
  3. $filename = $this->filename ;
  4. $encoded_filename = urlencode($filename);
  5. $encoded_filename = str_replace("+", "%20", $encoded_filename);

    header("Pragma: public");
  6. header ("有効期限: 0");
  7. header("キャッシュ制御: 必須再検証、事後チェック = 0、事前チェック = 0");
  8. ヘッダー("コンテンツ タイプ: application/force-download");
  9. header("Content-Type: application/octet-stream");

  10. //header("Content-Type: application/vnd.ms-excel;charset=UTF-8") ;

  11. header("Content-Type: application/download");;
  12. if (preg_match("/MSIE/", $ua)) {
  13. header('Content-Disposition:attachment; filename="' . $encoded_filename . '"');
  14. } else if (preg_match("/Firefox/", $ua)) {
  15. header('Content-Disposition:attachment; filename*="utf8''' . $filename . '"');
  16. } else {
  17. header('Content-Disposition:attachment; filename="' . $filename . '"');
  18. }
  19. header("Content-Transfer-Encoding: binary ");
  20. }
  21. ?>< ;/p>
コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。