ホームページ >バックエンド開発 >PHPチュートリアル >PHP ファイルをダウンロードする際に中国語のファイル名が文字化けする問題を解決する
ブラウザで開くと、document.txtをダウンロードできます。 ただし、$filename が UTF-8 でエンコードされている場合、一部のブラウザーはそれを適切に処理できません。 例:
プログラムをUTF-8エンコードで保存して再度アクセスすると、IE6でダウンロードしたファイル名が文字化けします。 FF3でダウンロードしたファイル名には「中国語」という単語しか入っていません。 Opera 9 ではすべて正常に動作します。 出力ヘッダー: Content-Disposition: 添付ファイル名=中文 filename.txt 実際、RFC2231 の定義によれば、多言語エンコーディングの Content-Disposition は次のように定義される必要があります。 コンテンツの配置: 添付ファイル名*="utf8''%E4%B8%AD%E6%96%87%20%E6%96%87%E4%BB%B6%E5%90%8D.txt" 今すぐ: ファイル名の後の等号は * で始まる必要があります。ファイル名の値は、文字セット (utf8)、言語 (空)、および URL コード化されたファイル名という 3 つのセグメントに一重引用符で囲まれて分割されます。二重引用符を追加することをお勧めします。それ以外の場合は、ファイル名のスペースの後の部分を追加します。 Firefoxでは表示されません。 urlencode の結果は、php の urlencode 関数の結果と同じではないことに注意してください。PHP の urlencode はスペースを + に置き換えますが、ここでは %20 に置き換える必要があります。 テストの結果、いくつかの主流ブラウザのサポートは次のとおりであることが判明しました。
|