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はあきらめます。

以上です。

WordPress

Posted by zzz