Firefox でダウンロードするとファイル名が文字化けする現象を調査する修行

とあるダウンロード機能で、Firefox だと文字化けするという現象の調査依頼。IE だと日本語を含むファイル名も意図した名前でダウンロードできが、Firefox だとファイル名が文字化けしてしまう。

どうやら、Content-Disposition レスポンスヘッダについたファイル名 (attachment; filename) のエンコーディングの解釈が IEFirefox で違うらしい。EUC-JP のページにダウンロードするリンクがあるとき、Firefox は filename の値が EUC-JP で書かれていると判断し、IE は Shift-JIS で書かれていると判断する模様。
問題となったアプリでは、filename の値を明示的に Shift-JIS に変換していたので、IE で O.K.、Firefox で NG となった。
とりあえず該当アプリでは、USER_AGENT を見てエンコーディングを切り替えることで対処することにした。

動きから判断すると、Firefox は、ダウンロード元になった画面のエンコーディングと同じだと判断するのだろう。それはそれで妥当な気もするが、元のページを取得したリクエストとダウンロードのリクエストの間に直接関係はないので、IE の動作もあながち間違いではないような気もする(いや、ダウンロードの際のリクエストヘッダでリンクしているか)。
RFC 的にはどうなのか、などさらなる調査が必要。

ちなみに、Firefox でも、入れた Extension によっては、IE と同じ動作になるものがあるので注意。(Tab Mix Plus Extension はそうなるっぽい。)