iOSから送信される日本語テキストメールのcharsetを調査しました
本業の一つでメールを送受信するシステムのお守りをしている関係で、RFC822の系統や日本語の文字コードやら、Javaにおける文字の取り扱いに関してはそこそこ詳しかったりするのですが、最近そのあたりの研究を怠っているせいですっかり時代に取り残されてる感が強いため、再び調査しなおすことにしました。
というわけで、まずはiOSのメーラーから送信されるメールを調査。
サブジェクトの方は無視してbodyの方に注目します。 (ヘッダフィールドの方も同じルールっぽいし、この辺りの情報を必要とする人がRFCを読んでないなんてありえないので、メールの構造とかはざっくり省略します) charsetの後ろの括弧は、Content-Transfer-Encoding
いわゆるJISコード
JIS X 201(半角カナは除外), JIS X 208の文字集合
- iso-2022-jp (7bit)
JISコード+MS932の範囲内の文字
〜や丸囲み数字等、cp932/ms932(windows)で利用されるが、機種依存文字としてインターネットでの使用を控えるように言われている(た)文字。Softbankとauで若干扱いが異なる。
Softbank
2012/6 初旬に確認した時は
- Shift_JIS(8bit/quoted-printable)
で投げられていたが、今(2013/3))確認したら
- iso-2022-jp(7bit)
に変わっていた。 RFC的にはそれをiso-2022-jpとしちゃいかんだろうとか思うのだけれど、実際にはちゃんと表示可能なメーラーがほとんどだろうから、いちいち目くじらたてても仕方がないのかもしれない。
au
- cp932(base64)
JISコード+絵文字
Softbank
- Shift_JIS(8bit/quoted-printable)
絵文字はSoftBankのSJISコード体系。PUBに定義されている方のコードなのかも?
au
絵文字はUnicode体系。
Unicode
Unicodeでしか表現のできない文字を使った場合
絵文字はUnicode体系。
とまぁこんな感じになりました。 Unicodeの絵文字が各キャリアの絵文字にどんな風にマッピングされるのかとか、まだまだ調査が必要ですが、いろいろ面白くなってきてますね。 Unicode6.0での絵文字対応のこともありますし、こっちが片付いたらAndroidの方でも調査しておかないといけませんね。