basename() 関数で日本語パスが取れない場合の対応方法は?
-
いつもお世話になっています。日本語名を含むファイルパスの取得についてご教示ください。
EWWW Image Optimizerという画像圧縮プラグインを使っているのですが
漢字を含む日本語名の画像ファイルを変換する際に、ファイル名が正しく取得できない問題が発生しました。
そこで作者の方にデバッグ情報を送ったところ「basename() のlocaleの問題のようだがこちらでは再現できなかった」と言われました。
そして、「そちらでApacheやPHPのlocaleを修正してUTF-8が適切に動くか確認する必要がある」とのことでした。そこで質問なのですが、これはサーバー側をどうにかしないといけない問題なのでしょうか?
Wordpressでは日本語名の画像ファイルを正常にアップロード出来ており、メディアなどから閲覧できるので、プラグイン側で解決できる話かもしれないと思ったのです。どのような解決法を辿るのがスマートか、助言を頂けると大変助かります。
以下は私の考えですが、素人なのでおかしなことを言ってたらご指摘いただきたいです。
basename()の説明で、「マルチバイトの場合にはsetlocale()を行え」と言っているみたいです。
https://www.php.net/manual/ja/function.basename.phpそこで、EWWWプラグイン内でbasename()でファイル名を取得する前に
setlocale(LC_ALL, ‘ja_JP.UTF-8’);
などの対応を挟んでもらえれば解決するのかもしれないと予想しています。また、調べている中でwp_basename()という関数があることを知りました。
i18n friendly version of basename()と書いてあり、basename()を国際化対応したようなものに読めるのですが、basename()をwp_basename()に置き換えて解決したりしないでしょうか。拙い説明で恐縮ですが、どうぞよろしくお願い致します。
トピック「basename() 関数で日本語パスが取れない場合の対応方法は?」には新たに返信することはできません。