※ ChatGPTを利用し、要約された質問です(原文:PHPのsystem実行時の日本語ファイルについて)
PHPのsystem実行時に日本語ファイル名の取得方法
このQ&Aのポイント
PHPのsystem実行時に日本語ファイル名が取得できない問題が発生しています。
日本語ファイル名を取得するためには、言語設定($LANG)を適切に設定する必要があります。
試しにLANG=ja_JP.UTF-8として実行してみましたが、うまくいかなかったようです。
PHPのsystem実行時の日本語ファイルについて
PHPのsystem実行時の日本語ファイルについて困っております。
PHP から、zip で圧縮を行い、zipファイルをダウンロードさせる処理を行っています。
zip は、
$execStr = "zip -q aaa.zip 対象ファイル名";
system ( $execStr );
で行っております。
その際、対象ファイル名に、日本語が入っている場合に
ファイル名が取得できなく、圧縮が失敗しています。
対象ファイル名に、日本語が入らない場合は、問題なく成功しています。
失敗する場合、"ls 対象ファイル名"で
system 実行して確認してみましたが、
そのようなファイルは無い との結果でした。
日本語の言語設定( $LANG ) が問題なのではと考えています。
teraterm で確認すると LANGが
ja_JP.UTF-8 だと、日本語ファイル名が表示されますが
ja_JP.eucJP だと、文字化けします。
system 実行時に、echo $LANG で確認すると、
ja_JP.eucJP になっておりました。
どうにか、日本語ファイル名を取得する方法がありますでしょうか。
試してみたことは
$execStr = "LANG=ja_JP.UTF-8; export LANG ;zip -q aaa.zip 対象ファイル名";
→ダメ
$execStr = "LANG=ja_JP.UTF-8; zip -q aaa.zip 対象ファイル名";
→ダメ
お礼
mb_convert_encoding でいけました。 unix 側でどうにかしようと固執しました。 頭が足りなかったです。 ありがとうございます。