俺のところの自宅メールサーバーは、Linuxで運営しています。
普段メンテナンスはTeratermで接続して行っているのですが、全角文字はUTF-8で処理されています。
今回、メールの中身を確認する必要がでてきたのでTeratermで内容の確認を行うのですが、メールの場合、送信者の環境次第で、どの文字コードが使用さえるかわかりません。
UTF-8で送信してくれるなら問題なく表示できますが、それ以外だと文字化けしてしまいます。
そこで、nkfコマンドを使用して文字コード判別、変換を行って表示します。
debian:/home/hoge/Maildir/cur# cat 1454851827.V301I307c2M657451.debian:2,S | nkf -g
ISO-2022-JP
1454851827.V301I307c2M657451.debian:2,Sが、メールのファイルになります。
catコマンドの出力をnkfコマンドにわたして文字コードの判別を行います。
今回のメールはISO-2022-JPと判明しました。
TeratermではUTF-8を使用しているので、そのままでは文字化けしてしまいます。
UTF-8に文字コードを変換して表示します。
debian:/home/hoge/Maildir/cur# cat 1454851827.V301I307c2M657451.debian:2,S | nkf -w
・・・・・・省略・・・・・・
Subject: 送信テスト
Date: Sun, 7 Feb 2016 22:30:32 +0900
MIME-Version: 1.0
Content-Type: text/plain;
format=flowed;
charset="iso-2022-jp";
reply-type=original
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Mailer: Microsoft Windows Live Mail 15.4.3555.308
X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308
送信テスト
文字化けすることなく表示されました。
文字コードを変換しないでISO-2022-JPのまま表示すると以下のように文字化けします。
debian:/home/hoge/Maildir/cur# cat 1454851827.V301I307c2M657451.debian:2,S
・・・・・・省略・・・・・・
Subject: =?iso-2022-jp?B?GyRCQXc/LiVGJTklSBsoQg==?=
Date: Sun, 7 Feb 2016 22:30:32 +0900
MIME-Version: 1.0
Content-Type: text/plain;
format=flowed;
charset="iso-2022-jp";
reply-type=original
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Mailer: Microsoft Windows Live Mail 15.4.3555.308
X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308
Aw?.%F%9%H
文字化けして内容が確認できません。
nkfコマンドの主なオプションは以下となります。
-j ISO-2022-JPに出力
-s Shift-JISに出力
-e EUC-JPに出力
-w UTF-8に出力
-g 文字コード判定
-Lu 改行コードをLFに変換
-Lw 改行コードをCR+LFに変換
-Lm 改行コードをCRに変換
使い方は
cat ファイル名 | nkf (-option)
または
nkf (-option) ファイル名
debian:/home/hoge/Maildir/cur# nkf -w 1454851827.V301I307c2M657451.debian:2,S
としても同じです。
ではでは~☆ミ
0 件のコメント:
コメントを投稿