HTTPヘッダーのContent-Dispositionの日本語ファイル名が化ける

HTTPプロトコルでは,Content-Dispositionヘッダーフィールドは送信されるエンティティ本文の特性を指定するのに使われます。このフィールドは通常,ブラウザが受け取ったファイルをどのように処理するかを指示するために使われ,ファイルの保存名や種類などの情報が含まれます。

Content-Dispositionヘッダーフィールドのファイル名が漢字を含む場合、HTTPプロトコルでデフォルトで使用されるASCII符号化されたため、漢字ファイル名は文字化けする問題があります。

この問題を解決するため、非 ASCII 文字をエンコードする RFC 5987 で定義されている拡張構文ファイル名を使用できます。この拡張構文は、パーセント符号と ASCII コード表記を使用して非 ASCII 文字をエンコードします。たとえば、中国語のファイル名「中文文件.txt」は、「%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.txt」としてエンコードできます。

Content-Disposition ヘッダフィールドの filename* パラメータでは、エンコードされたファイル名を指定できます。 たとえば:

Content-Disposition: attachment; filename*=UTF-8”%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.txt

ブラウザがファイルを受信した際に、ファイル名を正しくデコードできます。これにより、日本語ファイル名の文字化けを防げます。

Content-Disposition ヘッダフィールドの解釈方法はブラウザによって異なる場合があるので、実際に利用する場合、十分なテストと互換性対策が必要になります。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds