忘れちゃうので覚え書き。
a ESC$B あ [太陽]ESC(B ESC$B あ ESC(B a [太陽] [太陽] ESC$B あ ESC(B a [太陽] a ESC$B あ ESC(B ESC$B あ [太陽] ESC(B a a [太陽] ESC$B あ ESC(B [太陽][傘][雲]
それぞれの意味は以下
これを見る限り、
というルールがあるように見受けられる。
ちなみに Content-Type は text/plain;charset="ISO-2022-JP" になっている。
ブランチ作ってやってみたよ!podはまだ書いてません><
ブランチはこちら↓
changesetはこちら↓
http://coderepos.org/share/changeset/7172
ほとんどKDDIJISからのコピペなんだけど、ちょっとだけ違います。
(関数とかバリバリコピペでDRYじゃないので、どうしましょうか>id:tokuhirom)
まずはAirHから送られてくる絵文字入りメールの仕様ですが、AirHのメールの本文は基本的にiso-2022-jpなんだけど、DoCoMo互換の絵文字だけはそのまんまのshiftjisでくるため、そこの部分だけをうまいこと変換してやらなくちゃならない。(KDDIJIS.pmはバイトをずらしたりしてるけど、その部分の処理がAirHJIS.pmと違う。)
例えば、[ISO]をiso-2022-jpで、[SJIS]を絵文字とすると
[ISO][ISO][ISO][ISO][SJIS]、[ISO][ISO][ISO][ISO][SJIS][ISO][SJIS]
なんて感じのメールになってる。
で、実際のAirHJIS.pmの動作としては以下のようになってます。
decodeするときは、[SJIS]にマッチするものだけshiftjisのままにしておきつつ、[ISO]の部分だけshiftjisに変換し、最終的にx-sjis-docomo-rawを使ってdecodeしています。
encodeするときは、まずx-sjis-docomo-rawでencodeしたあとに、1文字ずつDoCoMo互換の絵文字の領域のものだったそのまま残して、それ以外の文字であったらiso-2022-jpに変換していくという処理をしています。
まぁ、そのままですね。
どうでしょう>Encode::JP::Mobile's authors
DoCoMoのUAのページに705i系が追加されてたからだった。
追加された端末を08_docomo_htmlversion.tに追加しときました>id:tokuhirom
今更だけどcpan shellでforce installするには
% cpan -f Module::Name
とすればいいことを初めて知った…。
TODO: いまものすごい勢いで開発が進んでいるEncode::JP::Mobileのtoolsとdat以下のファイルが何に使えるのかよくわからないのであとで調べてみる。