ブログランキング・にほんブログ村へ
PVアクセスランキング にほんブログ村
子豚のココのお勧め商品 - にほんブログ村

■おすすめの商品
防災グッズ
Evopow ポータブル電源 ソーラーパネル セット リン酸鉄リチウム 1024Wh 出力1000W (瞬間最大2000W)とソーラーパネル 100W ポータブルバッテリー 22% 純正弦波 車中泊 防災 キャンプ 家庭用 アウトドア用
最新記事
写真ギャラリー
検索
カテゴリアーカイブ
タグクラウド
最新コメント
リンク集
RSS取得

広告

posted by fanblog

2015年09月28日

メール 文字化け の 原因 対処方法。 MIME、Base64、UTF-8、シフトJIS

ここ数年のスマホやタブレットの普及により、
アプリケーションのUnicode対応は不可欠になりました。

多くの人が利用するメールソフトであるMozillaのThunderbirdも、
Unicodeへの対応を優先し、丸付き文字や絵文字・記号などの、ISO-2022-JPでは対応できない文字を
スムーズに取扱えるよう、38.0.1からはメールヘッダを強制的にUTF-8へエンコーディングするようになっています。

本文の文字エンコーディングの設定に関係なく、
SubjectなどのヘッダーはUTF-8で処理されます。

これで困るのが受信側のメールソフトが古かったり、
受信アプリケーションを自前で作っている場合。

さらに、MIME、base64 エンコーディングしている添付ファイル付きのメールとなると、
ますます複雑怪奇です。

下手をすれば、メールを正しく受信できないなどのトラブルに発展します。





メールタイトルのデコード


メールタイトルがUTF-8エンコードされた上にbase64エンコーディングされている場合、
メールタイトル文字列の先頭10文字が「=?UTF-8_B?」になっています。

さらに、文字列最尾2文字が「_=」になっているので、
これ以外の部分をデコードしていきます。


■Delphiでの変換例
【BASE64】→【UTF-8】→【SJIS】
sDumy := '=?UTF-8?B?44G744GS44G744GS?=';
sDumy := DecodeBase64(Copy(sDumy,11,Length(sDumy)-12));
sSubject := AnsiString(UTF8Decode(sDumy));
// sSubjectは、「ほげほげ」です。


【BASE64】→【SJIS】
sDumy := '=?shift_jis?B?gtmCsILZgrA=?=';
sSubject := DecodeBase64(Copy(sDumy,15,Length(sDumy)-17));
// sSubjectは、「ほげほげ」です。


添付ファイル名のデコード


【BASE64】→【UTF-8】→【SJIS】
添付ファイル名の場合は、文字列の先頭10文字が「=_UTF-8_B_」。
文字列最尾2文字が「_=」になっています。

【BASE64】→【SJIS】
添付ファイル名の場合は、文字列の先頭14文字が「=_shift_jis_B_」。
文字列最尾2文字が「_=」になっています。


文字コードの確認


文字コードが何から何に変換されているのかを調べるのに
とても役立つサイトのご紹介です。

UIC > TOOL > エンコード・デコード > base64
URL、ファイル、テキストを各種文字コードのbase64エンコード、デコードが行えます。


文字コードの解析、変換(エンコード、デコード)
base64抜きでの文字コード変換ができます。


文字コード変換
UTF-8、Shift_JIS、EUC-JP、JIS の文字コードへの変換/その逆ができます。


データ変換ツール
これが一番簡単です。
変換されている文字コードを調べるのに役立ちます。


エンコードマニアックス
最強のエンコード/デコードサイト。
10進数、16進数、Base64、URL、MIME、uuencode、PHP Serialize、
Quoted Printable、JavaScript String、JavaScript encodeURI、
MD5、MD4、CRC32、unix passwd形式、SHA1、SHA-256、SHA-384、SHA-512、
そして、QRコードにも変換してくれます。

hogehogeQR.png


まとめ


日本においては、これまでは JISやMicrosoftが作ったShift-Jisが標準でした。
しかし、iPhoneやAndroidの台頭により、文字コードも複雑になってきました。

殆どの場合、最新のソフトウエアにバージョンアップすることで、
問題は解消するのですが、ユーザー側はさまざまな都合で、
バージョンアップできないなどの事情もあり、この文字コード問題は厄介です。

自前のプログラムを修正する場合、
文字化けしているメールの文字コードを調べていくのが一番かと思います。

面倒だと思いがちですが、
結局は丁寧に修正を行っていった方が早いです。



真珠 ネックレス あこや本真珠 ペンダント (ホワイト) 8mm シルバー925 (45cm) レディース



真珠 ピアス あこや本真珠 (ホワイト) 6mm-8mm シルバー925 バックキャッチ



真珠 ピアス 3連 アコヤ本真珠 (ホワイト) シルバー925 シリコンキャッチ レディース



真珠 ネックレス シルバー 鎖骨 ネックレス (60cm) レディース

お勧め記事 - パワーストーン 真珠 パールに込められた 不思議な力


この記事へのコメント
コメントを書く

お名前: 必須項目

メールアドレス: 必須項目


ホームページアドレス: 必須項目

コメント:

認証コード: 必須項目

※画像の中の文字を半角で入力してください。

この記事へのトラックバックURL
https://fanblogs.jp/tb/4228333

この記事へのトラックバック
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: