PHPで日本語ファイル名でファイルダウンロードさせようとすると、マルチバイトファイル名をそのまま渡すとIEでファイル名が文字化けしてしまう。
header("Content-disposition: attachment; filename=".$name);
一方、URLエンコードするとIEでは大丈夫となるが、FireFoxなどでURLエンコードされたままのファイル名でダウンロードとなる。
header("Content-disposition: attachment; filename=".rawurlencode($name));
以下のようにするのが正解。
header("Content-disposition: attachment; filename*=UTF-8’ja’".rawurlencode($name));
WINのIE、FF、Chrome、Opera
MACのSafari、Chrome、FF
でファイル名が文字化けせずにダウンロードできた。
最近のコメント