当時、メールソフト Outlook Express でやり取りしたメールなので、拡張子emlのファイルです。
試しに、拡張子をtxtと書き換えて、テキストエディタ「サクラエディタ」で開いてみると、文字化けすることなくメール本文を読むことができました。
emlファイルの拡張子書き換えについては、
⇒ こちらの記事をご覧ください。
⇒ こちらの記事もご覧ください。
ただし、拡張子を書き換えただけでは、ファイルタイプまで変換されるわけではありません。あくまでも、その内容をテキストエディタで表示させるためだけの、便宜的方法に過ぎません。
単にメール本文さえ読めればよい、というだけの場合には、有用な方法ではありますが、添付ファイル等は文字化けして、使い物になりません。
この件に関しては、narkejpさんという方が、ブログ記事にコメントをくださいました。
narkejpさんのコメントでは、emlファイルをtxtファイルに変換する本来の方法(一つの例)が詳しく紹介されているので、参考になります。
emlからtxtへ、拡張子を書き換えたファイルについて、試しにそのファイルタイプを調べてみました。ファイルタイプを調べるには、Ubuntu Linux でターミナルを起ち上げ、fileコマンドを使います。
そうすると、拡張子の書き換えだけでファイルタイプまで変換されるはずもないから、テキストファイルにはなっていません。これは、当然です。
ファイルタイプは、「RFC 822 mail」と出てきました。その「RFC 822 mail」とは、「電子メールメッセージのデータ形式」の一つのようです。
上記のとおり、emlをtxtに変えたファイルは、テキストファイルにはなっていないにしても、サクラエディタでは問題なく開くことができました。しかもメールヘッダー、本文ともに、文字化けもありません。
ところが、Microsoft製のテキストエディタ「メモ帳」で開くと問題が生じます。ヘッダー部分を除き、日本語文章が書かれている本文がものの見事に文字化けしています。何が書かれているのか、さっぱり判読不能です。サクラエディタがあれば支障がないのですが、メモ帳しかない環境では、お手上げ状態です。
この問題は、文字コードの不一致によるものです。
メモ帳のデフォルトの文字コードはUTF-8なのに対し、20年以上も昔のメールファイルの文字コードはJISだからです。ファイルの文字コードとして、JISが設定されていることは、サクラエディタ等のテキストエディタでファイルを開いて、画面右下を見れば分かります。そこに、「JIS」と表示されていることから、文字コードはJISであると確認できます(ただ、このことが問題であることは後述のとおりです)。
そこで、文字コード変換作業をやってみました。その手段として、Ubuntuで、Linuxコマンドを利用することにしました。
文字コード変換コマンドは、nkfがよく使われています。が、iconvというコマンドもあります。
nkfは追加でインストールが必要なのに対し、iconvはUNIXライクなOSに、ほぼ標準でインストールされています。なので、iconvコマンドを使うことにしました。
iconvの書式は、次のとおりです。
iconv -f 変換元の文字コード -t 変換後の文字コード <入力ファイル>
-fオプションは「from」と、-tオプションは「to」と覚えればよいでしょう。
from 元のコード
to 変換後コード です。
変換元の文字コードや変換後の文字コードの箇所には、
「SJIS」や「UTF-8」などと書きます。「sjis」や「utf-8」のように、小文字で書いてもOKです。
この書式に従って、コマンドラインに次のとおり記述しました。
$ iconv -f JIS -t UTF-8 hoge.txt
これを実行した結果は・・・、
はい、ダメダメでした。
これでは、文字化けが解消されません。意味不明のアルファベットがずらずらと羅列されています。
これでうまくいくと思ったのですが、そんなに甘くありませんでした。いったい、なぜでしょう?
そこで、あれこれと試行錯誤してみました。
「ああでもなければ、こうでもない。」と、さんざん試行錯誤した結果、ようやく変換に成功しました。
いったい、どうすれば文字コードを変換できたのか、どうすればメモ帳でも文字化けのないよう表示できるようになるのか、ここに記録しておくことにします。
20年以上も昔のemlファイルをテキストエディタで開くと、メールヘッダーに次の記述が見られます。
Content-Type: text/plain; charset=iso-2022-jp
調べてみると、「charset=iso-2022-jp」というのが文字コードのことで、これが俗に「JISコード」と呼ばれるもののようです。
ウィキペディアには、
「iso-2022-jpは、インターネット上(特に電子メール)などで使われる日本の文字用の文字符号化方式」
と解説されています。ならばということで、コマンドラインに次のとおり記述しました。
$ iconv -f iso-2022-jp -t UTF-8 hoge.txt
んで、これを実行してみると、
はい、はい、おめでとうございます。見事に成功です、やりましたっ!
文字化けが解消されて、きれいな日本語文章がターミナル画面に表示されるようになりました。粘り勝ちです。
$ iconv -f iso-2022-jp -t UTF-8 hoge.txt > afterconv.txt
とリダイレクトして、「afterconv.txt」というファイル名で保存し、その上でこれを「メモ帳」で開いてみました。
そうするとぉ・・・、
おぉっ、文字化けがきれいさっぱり解消されています。実に見事な、完璧な日本語です。
これで、メモ帳でも、昔のメールファイルを開いて読むことができるようになりました。サクラエディタがない環境でも対応できます。
× $ iconv -f JIS -t UTF-8 hoge.txt
〇 $ iconv -f iso-2022-jp -t UTF-8 hoge.txt
です。
つまり、「JIS」と「iso-2022-jp」とは全く同じではなく、両者には違いがあるということです。
テキストエディタの画面右下に「JIS」と出ても、より正確にはJISではなく、「iso-2022-jp」だった、というわけです。
それでは、また次の記事で
■■■■ goosyun ■■■■
《2024年10月27日追記》
複数ファイルの文字コード一括変換のスクリプトを作りました。
⇒ こちらの記事をご覧ください。