
linux文字コードはutf8,linuxからOutlook Expressに送信する。
受信したメールは文字化けとなる。なぜですか。
linuxで、シェルの中で、下記の部分で、送信する。
/sbin/service snmpd start 2>&1 | \
/bin/mail -s "snmpd was restarted tomatically." s@ks.co.jp
上記のソースを見ると、分かると思いますが。
メールの本体について、linuxで、VIモードで、
snmpd を起動中: ^[[60G[ ^[[0;32mOK^[[0;39m ]となっています。
catモードで、見ると、snmpd を起動中: [OK] となっています。
どうすれば、文字化けがなくなれますか。
No.3ベストアンサー
- 回答日時:
>「snmpdを起動中」の部分も化けています。
では、serviceコマンドの出力をメールで標準的に用いられる文字コードに変換する
/sbin/service snmpd start 2>&1 | iconv -f UTF-8 -t iso-2022-jp | mail -s .....
とか、そもそもメッセージを英語にする
LANG=C /sbin/service snmpd start 2>&1 | mail -s .....
などの対応が考えられます。
ただし、それでも [OK] の前後の制御文字列は残ってしまいますので、
> 制御文字列を取り除くようなフィルタを通す必要があります。』はどいうことですか。
sed などを使って、制御文字を削除するということです。
どうもありがとうございます。さすがという感じです。
まだ、質問があります。
実際に何千本のソースは上記のような問題があります。
各ソースで、出すメールも違います。
(1)制御文字列を取り除くことについて、
snmpd を起動中: ^[[60G[ ^[[0;32mOK^[[0;39m ]の中に、
制御文字は^[、G、mだけですが、制御文字にいろんな種類があります。
何千本のソースについて、制御文字が違うので、sedの利用方法も違うでしょうと思います。1つのsedの利用方法で、各ソースで、りようできれば、いいかなと思います。
(2)いろんなメーラがあります。Outlook Expressだけではないです。
メーラの文字コードも違います。文字コードをiso-2022-jpに変換しても大丈夫ですか。
No.7
- 回答日時:
最後と言いつつ、もう一点
> ソースを修正する以外のやり方
/bin/mail をスクリプトに置き換えて、ここでフィルタを通してしまうという手もありますね。非常に乱暴なやり方なのでお勧めしませんが。
No.6
- 回答日時:
うは、ノンストップですな…これで最後にします。
/bin/mail を sed 's/\x1b\[[0-9;]*[mG]//g' | iconv -f UTF-8 -t iso-2022-jp | /bin/mail に置換するフィルタの例です。
sed "s@/bin/mail@sed 's/\\\\x1b\\\\[[0-9;]*[mG]//g' | iconv -f UTF-8 -t iso-2022-jp | /bin/mail@g"
No.5
- 回答日時:
> なぜ、文字化けとなりますか。
Outlook Expressが、UTF-8の自動検出に対応してないか、ごく僅かな日本語文字列しか無いために、自動検出に失敗しているかのどちらかでしょう。いずれの場合でも、#1 さんがおっしゃるように、Header にコードが指定してあれば化けません。
Outlook Express から UTF-8 のメールを送る際は、適切なHeaderが付加されているはずですが、mail コマンドではHeaderが付加されませんので。
> 何千本のソースを対応しなければならないので、何か作業量を減らす方法とかありますか。
全部がシェルスクリプトで、決まったパターンがあるなら、自動的に書き換えるようなコードを書いて使えば良いと思います。
必ず mail コマンドにパイプするようになっているなら、その直前にフィルタを追加するような、比較的簡単なスクリプトで対応できると思います。頑張ってください。
すみません。初心者なので、例をあげてもいいですか。
(1)『全部がシェルスクリプトで、決まったパターンがあるなら、自動的に書き換えるようなコードを書いて使えば良いと思います。』の例
No.4
- 回答日時:
ちょっと書いてみました。
何千本ものソースに対応できるかは不明ですが。。。
/sbin/service snmpd start 2>&1 | sed 's/\x1b\[[0-9;]*[mG]//g' | iconv -f UTF-8 -t iso-2022-jp | mail -s ....
iso-2022-jp は極めて標準的なので、決め打ちで大丈夫だと思います。
ご丁寧にご回答していただいて、ありがとうございます。
すみません。まだ質問があります。
(1)なぜ、文字化けとなりますか。
linux文字コードはutf8,linuxからOutlook Expressに送信する。
受信したメールは文字化けとなる。
Outlook Expressで、utf8のメールを送信しても文字化けとなりません。
これはなぜですか。
(2)何千本のソースを対応しなければならないので、何か作業量を減らす方法とかありますか。
No.2
- 回答日時:
Outlook Express で「snmpdを起動中」の部分も化けているのでしょうか?
[OK] の部分だけが化けているのであれば、文字コードの問題ではありません。端末上で文字に色をつけるための制御文字列が生で表示されているだけです。
これが気になるなら、制御文字列を取り除くようなフィルタを通す必要があります。
この回答への補足
(1)「snmpdを起動中」の部分も化けています。Outlook Express でエンコードを手動で、utf8に変更すれば、「snmpdを起動中」の部分の文字化けがなくなります。だが、okの部分はまだ文字化けしています。今は手動で、エンコードを変更してほしくないです。どうすればいいですか。
(2)『制御文字列を取り除くようなフィルタを通す必要があります。』はどいうことですか。
No.1
- 回答日時:
ヘッダに正しい文字コードが書かれていないか、そもそもヘッダがないかのどちらかでは?
http://www.atmarkit.co.jp/fwin2k/win2ktips/711ma …
正しいヘッダを付けるか、↑に書かれているようにメーラ側で手動でエンコードを指定して読むかのどちらかでしょう
この回答への補足
Outlook Express でエンコードを手動で、utf8に変更すれば、「snmpdを起動中」の部分の文字化けがなくなります。だが、okの部分はまだ文字化けしています。今は手動で、エンコードを変更してほしくないです。どうすればいいですか。
補足日時:2009/05/09 10:51お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sambaのnmbが起動できない
-
インデザイン(InDesing)の開き...
-
起動すると、UNSUPPORTED MODE...
-
DNSサーバーの構築「no servers...
-
AIXルーティング情報について
-
MacOSのLaunchAgentsってなんで...
-
FMVマイページ、FMVサーチが勝...
-
pc初心者です。 UEFIでの設定で...
-
ネットにつながっていない社内P...
-
みやぶん太というファイル分割...
-
Win10とWin10デュアルブートし...
-
ソフトウェアの二重起動
-
iマックの初期化の方法
-
imac G4 の初期化
-
virtual boxで、黒い画面のまま...
-
CSDって?
-
ASUSノートPC'Windows8, biosの...
-
Windowsのショートカットキーを...
-
ブラウザからビューワへジャン...
-
メールアドレスをクリックした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
AIXルーティング情報について
-
DNSサーバーの構築「no servers...
-
Linuxサーバーは定期リブートを...
-
インデザイン(InDesing)の開き...
-
起動時のターミナルの状態を戻...
-
タスクスケジューラで自動再起動
-
batファイルでのプログラム起動順
-
MacOSのLaunchAgentsってなんで...
-
apache2.0.64に後からmod_sslを...
-
Linux デーモンのpsコマンドで...
-
sambaのnmbが起動できない
-
Let’s Encrypt の自動更新をcro...
-
wermgr.exeって何ですか?
-
/dev/ptyファイルはどうやって...
-
FReeBSD でセキュリティのため...
-
rsh コマンドでのパスワード入...
-
NTPサーバが死んでいるときのNT...
-
WMIを有効にする方法が分かりま...
-
sshdが自動起動するのは何故?
-
geditについて
おすすめ情報