「MIMEエンコードされたテキストを通常の文字に変換したい」
電子メールでは日本語などのマルチバイト文字をASCII形式で送るために「MIMEエンコード」が使われています。
この記事では、
nkf コマンドを使ってMIMEエンコードされたテキストを読める形式に変換する方法を解説します。Base64形式とQuoted-Printable形式の違い、メールヘッダの解読方法まで順番にまとめました。
【この記事でわかること】
・nkf -m でMIMEエンコード(Base64・QP形式)のテキストをデコードできる
・nkf -M でテキストをMIMEエンコードできる
・メールのSubjectやFromの日本語化けも同様の方法で解読できる
・perl の Encode モジュールを使った方法も紹介
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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エンコードの仕組みを理解して、文字化けメールを確実に解読する
メールの文字化けに慌てず対処できるスキルは、メールサーバー管理や障害対応の現場で必ず役に立ちます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます