Download Managerプラグインで日本語の文字化け対応
Download Managerプラグインを使用した日本語名を含むファイルのアップロードとダウンロードで文字化けが発生した。
ワードプレスのバージョン
WordPress 6.5
PHP 8.2.9
Download Managerプラグイン
プラグインホームページ https://ja.wordpress.org/plugins/download-manager/
Download Manager バージョン 3.2.89
ファイルをアップロード
ダウンロード→新規ファイルを追加で、日本語を含むファイル名を選択すると
文字化けしました。
WP Multibyte Patchプラグインを無効後
WP Multibyte Patchプラグインが有効になっていたので、無効にしてから、アップロードしてみると
正常に日本語ファイル名で登録できました!
ファイルをダウンロード
WindowsのChromeで日本語のファイル名のファイルは問題なくダウンロードできました。
WindowsのEdgeで日本語のファイル名のファイルは問題なくダウンロードできました。
MacのChromeで日本語のファイル名のファイルは問題なくダウンロードできました。
iPhoneのChromeで日本語のファイル名のファイルは問題なくダウンロードできました。
MacのSafariで日本語のファイル名のファイルは文字化けしました。
iPhoneのSafariで日本語のファイル名のファイルは文字化けしました。
RFC6266の仕様でエンコードすればできるとのこと。
plugins\download-manager\src\__\FileSystem.php
FileSystem.phpのなかに4箇所、それっぽいところがありました。
118行目 header("Content-disposition: attachment;filename=\"{$filename}\"");
125行目 header("Content-disposition: attachment;filename=\"{$filename}\"");
216行目 header("Content-disposition: attachment;filename=\"$filename\"");
233行目 header("Content-disposition: attachment;filename=\"$filename\"");
この4箇所を書き換えてみました。
header('Content-Disposition: attachment; filename*=UTF-8\'\''.rawurlencode($filename));
結果、ダメでした。
問題なかったWindowsでも文字化けになりました。
元に戻して、Safariはあきらめます。
以上です。
ディスカッション
コメント一覧
まだ、コメントがありません