androidへのメール化け対策(1)

うちの会社のシステム運用上で iPhone5に機種変したタイミングで発覚したメールの文字化け問題。

最初は比較的単純な対応策で大丈夫かな?と甘く見積もっていたのですが、対策したつもりでも その後もチラホラと文字化けが発生しているのがログを確認したら出てきた。

気になりつつも、多忙の上に試験前だったこともあり、仕方なく毎回ログを確認しては化けてる相手に個別に対応して乗り切ってきて、ようやく試験も終わったので本腰を入れて朝から対応しておりました。

通常のテストパターンでは丸っきり問題が出てこないのでまずは条件出しからのスタート。
どうやら…文字化けが発生しているのはiPhone5に変更してからというのは浮上してきているものの、それがiOS6にしたiPhone4では出ていなかったからややこしい。

化ける相手はどうもAndroidスマホに限られている様子なのでコチラの原因というよりはAndroid側に原因がありそう。でもさすがにお客様のスマホのせいです、と言いきるわけにもいかず何とか対策を立てなきゃなんない。

こちら側で調整ができる要素は送信文字コードを変えてあげることくらい。
Androidスマホはcp932という文字コードのメールを受信すると盛大に文字化けするらしい。
確かに化けるメールの文字コードをみるとドンピシャでCharaset=cp932となっているので、これをShift_JISかutf-8に固定してあげるのが良さそう。

テストパターンは「~」。
実はこの「~」には2種類あって、画面上では判別できないけどcp932に変換されるものが混在している。
※iPhoneを持っている方は「ー」で変換候補を出せば2つ「~」が出てくるのでどっちかが文字化けのきっかけになるやつです。

この「~」を文に入れると iPhoneはcp932という文字コードで送信してくれるのでAndroid側では化けてしまう。 なので対策としては例え「~」が入っていてもcp932にならない他の文字を挿入してあげること。

さて、具体的にどうやって文字を挿入するか。
(2)に続く…