ホームページ >バックエンド開発 >PHPチュートリアル >PHPダウンロードファイル名の文字化けを解決する方法_PHPチュートリアル
Content-Type を application/octet-stream に設定すると、動的に生成されたコンテンツをファイルとしてダウンロードできることは誰もが知っていると思います。次に、Content-Disposition を使用して、ダウンロードしたファイル名を設定します。これは多くの人が知っています。基本的に、ダウンロード プログラムは次のように記述されます:
リーリーブラウザで開くと、document.txtをダウンロードできます。
ただし、$filename が UTF-8 でエンコードされている場合、一部のブラウザーはそれを適切に処理できません。たとえば、上記のプログラムを少し変更します:
リーリーUTF-8エンコードでプログラムを保存してアクセスすると、IE6でダウンロードしたファイル名が文字化けします。 FF3でダウンロードしたファイル名には「中国語」という単語しか入っていません。 Opera 9 ではすべて正常に動作します。
出力ヘッダーは実際には次のようになります:
リーリー実際、RFC2231 の定義によれば、多言語エンコーディングの Content-Disposition は次のように定義される必要があります:
リーリーつまり:
テストの結果、いくつかの主流ブラウザのサポートは次のとおりであることが判明しました:
IE6 | 添付ファイル名=" |
FF3 | 添付ファイル名 = "UTF-8 ファイル名" |
添付ファイル名*="utf8 |
|
O9 | 添付ファイル名 = "UTF-8 ファイル名" |
Safari3(Win) | サポートされていないようです?上記の方法はどれも機能しません |
すべての主要なブラウザをサポートするには、プログラムを次のように記述する必要があるようです:
リーリー