MIMEでエンコードされたテキストを読めるように変換する


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > MIMEでエンコードされたテキストを読めるように変換する
「メールのSubjectが意味不明な文字の羅列になっていて読めない」
「MIMEエンコードされたテキストを通常の文字に変換したい」

電子メールでは日本語などのマルチバイト文字をASCII形式で送るために「MIMEエンコード」が使われています。

この記事では、nkf コマンドを使ってMIMEエンコードされたテキストを読める形式に変換する方法を解説します。
Base64形式とQuoted-Printable形式の違い、メールヘッダの解読方法まで順番にまとめました。

【この記事でわかること】

・nkf -m でMIMEエンコード(Base64・QP形式)のテキストをデコードできる
・nkf -M でテキストをMIMEエンコードできる
・メールのSubjectやFromの日本語化けも同様の方法で解読できる
・perl の Encode モジュールを使った方法も紹介


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

MIMEエンコードとは

MIMEエンコードは、メールで日本語などのマルチバイト文字を送信するための変換方式です。
テキストをASCII文字のみで構成される文字列に変換します。

主な形式は2種類です。
Base64形式:バイナリデータをA-Z・a-z・0-9・+/の64文字に変換
Quoted-Printable形式:ASCII範囲外の文字を =XX 形式に変換

メールのヘッダでは次のような形式で表現されます。

# Base64形式のMIMEエンコード(=?文字コード?B?Base64データ?=) Subject: =?ISO-2022-JP?B?44OG44K544OI?= # Quoted-Printable形式(=?文字コード?Q?QP形式データ?=) Subject: =?UTF-8?Q?Linux=E5=85=A5=E9=96=80?=

nkf コマンドでMIMEデコードする

1. ファイルのMIMEエンコードをデコードする

# テスト用のMIMEエンコードファイルを作成する $ cat test.txt エンコード デコード # MIMEエンコードする $ nkf -M test.txt > mime.txt $ cat mime.txt =?ISO-2022-JP?B?...?= # MIMEデコードする $ nkf -m mime.txt > decode.txt $ cat decode.txt エンコード デコード # ↑元の文字列に戻りました

2. メールヘッダのMIMEエンコードを解読する

メールのSubjectが文字化けしている場合の解読方法です。

# メールヘッダのエンコードされたSubjectを解読する $ echo "=?ISO-2022-JP?B?44OG44K544OI?=" | nkf -m テスト # UTF-8のBase64エンコードを解読する $ echo "=?UTF-8?B?TGludXjlhaXplpM=?=" | nkf -m Linux入門

3. perl で直接デコードする

nkf がインストールされていない環境では、Perl の Encode モジュールで代替できます。

# perl でMIMEヘッダをデコードする $ perl -MMIME::Words=decode_mimewords -e ' my $encoded = "=?ISO-2022-JP?B?44OG44K544OI?="; my @words = decode_mimewords($encoded); print Encode::decode($words[0][1], $words[0][0]), " "; ' テスト

本記事のまとめ

やりたいこと コマンド
MIMEエンコードをデコードする nkf -m ファイル名
テキストをMIMEエンコードする nkf -M ファイル名
標準入力からデコードする echo "エンコード文字列" | nkf -m
MIMEエンコードの仕組みを理解しておくと、メールサーバーの管理や文字化けトラブルへの対応が格段にスムーズになります。

MIMEエンコードの仕組みを理解して、文字化けメールを確実に解読する

メールの文字化けに慌てず対処できるスキルは、メールサーバー管理や障害対応の現場で必ず役に立ちます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。