解決済みの質問
cronでjavaを起動する場合、javaの中でSystem.out.println("あああ");
としたログがroot宛のmail(/var/spool/mail/root)で文字化け(日本語部分が???)
となってしまいます。
30 5 * * * root java -cp /home/abc/java/ test1 | nkf --jis を試しましたが
上手くいきません。
画面表示はUTF-8からEUCへ変更しましたが、sendmailもeucとかに設定が必要なので
しょか?教えて頂けれると助かります。
Redhat Linux EP4
投稿日時 - 2005-11-18 20:30:45
> 問題なく「あああ」 と表示されますが、cronの中で
> 起動したjavaのログ内容の日本語部分のみ文字化け
> (???)となります。
なるほど、分かりました。
まず cron から実行されるプログラムに環境変数 LANG(=ja_JP.eucJP)を渡す必要があるのであれば、それを明示しなくてはなりません。単に java コマンドを実行するのではなく
LANG=ja_JP.eucJP java -cp ....
のようにするか、以下のような shell script を適当な名前で作成・保存してそれを実行しましょう。
----- ここから -----
#!/bin/sh
export LANG=ja_JP.eucJP
java -cp /home/abc/java/ test1
----- ここまで -----
※ 実行権限をつける(chmod 755 ...)のをお忘れなく。
これで多分、環境変数 LANG に ja_JP.eucJP がセットされた状態で java が起動できることでしょう。
次にメールでの文字化け、というところですがメールをどういう風に読みたいのでしょうか?
> vi /var/spool/mail/root
と書かれていますが、普通、メールをエディタ(vi)では読まないですよ。きちんとするなら
1. POP3 サーバを立ち上げてメールソフトで読む
2. root 宛のメールを別のアカウント(外部の自分のアドレスなどが良いでしょう)に転送し、メールソフトで読む
のいずれかです。ただ、今までと同じ方法でよいのであれば、上記の LANG 設定で euc 出力にはなっていますので nkf を使わなければ大丈夫でしょう。
投稿日時 - 2005-11-19 14:42:56
お礼
回答ありがとうございます。
解決できました。有難うございました。
>> vi /var/spool/mail/root
>と書かれていますが、普通、メールをエディタ(vi)では読>まないですよ。きちんとするなら
このメール内容を出勤時にプリンターへ出力するために
こういう表記をしました。
色々参考になり有難うございました。
投稿日時 - 2005-11-19 15:25:41
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
コマンドラインから
$ java -cp /home/abc/java/ test1 | nkf --jis
した場合は文字化けしないのでしょうか?
sendmail 側での設定は特に必要ないと思いますよ。
投稿日時 - 2005-11-19 10:17:40
お礼
回答ありがとうございます。
>sendmail 側での設定は特に必要ないと思いますよ
参考になりました。
Red Hat Enterprise Linux 4では,OSの日本語ロケール(文字コード)が
EUC から UTF-8 に変更 され、今までEUCで作ったソースや実行結果などの
日本語部分が文字化するためLANG="ja_JP.eucJP"として使用しております。
そのためnkfを使用せずに $ java -cp /home/abc/java/ test1とするだけで
問題なく「あああ」 と表示されますが、cronの中で起動したjavaのログ内容の
日本語部分のみ文字化け(???)となります。
vi /var/spool/mail/root
何かわかりましたら教えてください。
投稿日時 - 2005-11-19 13:02:29