PHPから起動したjava内で日本語ファイル名が文字化けする
ちょっとハマったのでメモ。
ubuntu環境でPHPからJavaを呼んで、バッチ的な処理をさせるとき。
Javaから日本語のファイル名が取得できなくて困った。。
これを使って、ファイル名を正規表現でマッチするものだけを処理するって処理だったのに
何故かできない。
原因:PHPからshell_exec()する時に、明示的に
export LANG=hogehoge
してあげないと、正しい値を取得できない。
今回、プログラムはすべてUTFで作っていたので、
export LANG="ja_JP.UTF-8"
を入れていたのですが、どうにもうまく取得できず。
日本語部分が文字化けする。
なんでー?なんでー?といろんな人を巻き込んで
悩んだこと丸一日。。。
結果、サーバの設定的に
en_US.UTF-8 だったから、
export LANG="en_US.UTF-8"
としてあげないと、正しく取得できなかったと。
そういうわけでした。
正常に動いているPHPから
php -r "echo shell_exec('echo $LANG');"
とか
とかの結果で出てきた値でやると
今どの文字コードで動いているのかがわかるので
これを明示的に与えてあげると、うまく動作する
ってことだったらしいです。
echoしたら結果が出てくるんだから、
それで動いてくれればいいのにね。
ひどいわー。 私の一日を返してほしい。
お手伝いしてくれたふぐさん、ありがとうございましたですm(_ _)m