プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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 を使わなければ大丈夫でしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
解決できました。有難うございました。

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

お礼日時:2005/11/19 15:25

コマンドラインから



 $ java -cp /home/abc/java/ test1 | nkf --jis

した場合は文字化けしないのでしょうか?

sendmail 側での設定は特に必要ないと思いますよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!