ホームページ > バックエンド開発 > PHPの問題 > PHPのダウンロードファイルが文字化けする問題を解決する方法

PHPのダウンロードファイルが文字化けする問題を解決する方法

藏色散人
リリース: 2023-03-07 22:32:01
オリジナル
2457 人が閲覧しました

PHP ダウンロード ファイルが文字化けする問題の解決策: 1. フラッシュ関数を使用して出力バッファを更新し、PHP ダウンロード ファイルが文字化けする問題を解決します。2. ob_clean 関数を使用して出力バッファをクリアし、次の問題を解決します。 PHPのダウンロードファイルが文字化けする。

PHPのダウンロードファイルが文字化けする問題を解決する方法

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 7.1。この方法は、すべてのブランドのコンピューターに適しています。

推奨: 「PHP ビデオ チュートリアル

ファイル ストリームを使用してファイルをダウンロードする PHP 方法 (添付: ダウンロードされたファイルの内容が文字化けする問題の解決)

1. flash - 出力バッファをリフレッシュします

2. ob_clean - 出力バッファをクリア (消去)

この関数は、出力の内容を破棄するために使用されますバッファ。

この関数は出力バッファを破壊しませんが、ob_end_clean() のような関数は出力バッファを破壊します。

注: 上記 2 つの関数は、PHP ダウンロード ファイルの内容が文字化けする問題を解決できます。

コードは次のとおりです。

// 文件名不要用中文
//fname为要下载的文件名
    //$fpath为下载文件所在文件夹,默认是downlod
    function download($fname,$fpath="download/"){
        //避免中文文件名出现检测不到文件名的情况,进行转码utf-8->gbk
        $filename=iconv('utf-8', 'gb2312', $fname);
        $path=$fpath.$filename;
        if(!file_exists($path)){//检测文件是否存在
            echo "文件不存在!";
            die();
        }
        $fp=fopen($path,'r');//只读方式打开
        $filesize=filesize($path);//文件大小
        //返回的文件(流形式)
        header("Content-type: application/octet-stream");
        //按照字节大小返回
        header("Accept-Ranges: bytes");
        //返回文件大小
        header("Accept-Length: $filesize");
        //这里客户端的弹出对话框,对应的文件名
        header("Content-Disposition: attachment; filename=".$filename);
        //================重点====================
        ob_clean();
        flush();
        //=================重点===================
        //设置分流
        $buffer=1024;
        //来个文件字节计数器
        $count=0;
        while(!feof($fp)&&($filesize-$count>0)){
            $data=fread($fp,$buffer);
            $count+=$data;//计数
            echo $data;//传数据给浏览器端
        }
        fclose($fp);
    }
    download("CGEX脚本清单.doc");
ログイン後にコピー

以上がPHPのダウンロードファイルが文字化けする問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート