• ベストアンサー

cron(javaプログラム)からroot宛のmailで日本語文字化けの件で

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> 問題なく「あああ」 と表示されますが、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 を使わなければ大丈夫でしょう。

zerokara
質問者

お礼

回答ありがとうございます。 解決できました。有難うございました。 >> vi /var/spool/mail/root >と書かれていますが、普通、メールをエディタ(vi)では読>まないですよ。きちんとするなら このメール内容を出勤時にプリンターへ出力するために こういう表記をしました。 色々参考になり有難うございました。

その他の回答 (1)

回答No.1

コマンドラインから  $ java -cp /home/abc/java/ test1 | nkf --jis した場合は文字化けしないのでしょうか? sendmail 側での設定は特に必要ないと思いますよ。

zerokara
質問者

お礼

回答ありがとうございます。 >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 何かわかりましたら教えてください。

関連するQ&A

専門家に質問してみよう