質問: 日本語が入った本文をユーザごとにメール送信したい 1行ごとにユーザの情報が記述された内容を 日本語でユーザごとにメールしたいのです。 file.1の中身 01_hamada 1991/01/01 1st 10 01_hamada@メールアドレス 02_yoshida 1992/02/02 2st 20 02_yoshida@メールアドレス 03_satoshi 1993/03/03 3rd 30 03_satoshi@メールアドレス 04_kinosita 1994/04/04 4th 40 04_kinosita@メールアドレス test.sh スクリプト #!/bin/bash while read line; do day=`echo "$line" | awk '{print $2}'` rank=`echo "$line" | awk '{print $3}'` point=`echo "$line" | awk '{print $4}'` addres=`echo "$line" | awk '{print $5}'` mail -s test "$addres" < messagebody.txt done < file.1 messagebody.txtの中身 あなたがテストを受けた日は$dayです。 順位は$rankです。 点数は$pointでした。 osは red hat enterprise linux es release 4 (nahant update 4) です。これでは日本語ファイルを絡めたスクリプトを 成立させることはできないのでしょうか このままだと、文字化けして$day,$rank,$pointが そのまま文字列として送信されてしまうのです。 なにか良い方法はないでしょうか
回答: まず、いくつか、基本的なことを、あなたは、見落としています。 1 日本語を表現する文字コードとしては、jis,shift-jis,euc-jp,utf-8の4つくらいが、メジャーに使われる文字コードです。あなたの環境・説明では、メールの原文は、なんという文字コードで記述することにしているのか、説明がありません。 2 e-mailの世界で、日本語のメッセージに使われるのは、通常、jis(iso-2022-jp)です。 3 mailコマンドに、生のテキストを放り込むだけでは、そのメールには、メッセージの文字コードを示すヘッダー情報が追加されません。ということは、デフォルトで、asciiの文字コードとみなすメールクライアントがほとんどですから、これは、文字化けします。 (詳細は、rfc822wo読んでください)