OSSのWEBメールアプリであるSquirrelMailで、日本語ファイル名がブラウザによっては文字化けする問題があったため、修正したものを下記で公開しました。
もともと、Shift_JISでそのままの文字をContent-Dispositionに設定するようなものになっていたのですが、その方法だと、文字化けしたりしなかったりと安定しなかったため、下記のように変更しています。
- IE(11未満):UTF8でURLEncode
Content-Disposition: attachment; filename="%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88.txt"
- 上記以外:RFC2231形式
Content-Disposition: attachment; filename*=UTF-8''%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88.txt
もともとの対応(Shift_JISそのまま)だと安定しなかった理由ははっきりとはわかっていません。現象としては、同じブラウザでもProxy通す、通さないで化けたり化けなかったり、明示的に別タブで開くことによっても結果が変わったりしていました。(Content-Dispositionの内容自体は差が無いです)
結局のところ、ブラウザの自動判別に任せるようなものにしない方が良いと思ったので、今回のような対応としています。
なお、IE以外でRFC2231に対応していないブラウザがあると問題となりますが、最近のバージョンならば、ほとんどブラウザ(IEも含む)で対応しているようですので、あまり問題にならないかと思います。
確認ができているブラウザは下記の通りです。(全てWindowsです)
- IE7 (7.0.6002.18005)
- IE8 (8.0.7601.17514)
- IE9 (9.0.8112.16421)
- IE10 (10.0.9200.16721)
- IE11 (11.0.9600.17358)
- IE11 (11.0.9600.17358)※互換表示
- Firefox 33.0.2
- Chrome 38.0.2125.111 m
- Opera 25.0.1614.68