Hatena::Groupmobilehacker

clouderの日記

 | 

2008-02-26

Encode::JP::Mobileにx-iso-2022-jp-airhを追加してみた。

22:19 |  Encode::JP::Mobileにx-iso-2022-jp-airhを追加してみた。 - clouderの日記 を含むブックマーク はてなブックマーク -  Encode::JP::Mobileにx-iso-2022-jp-airhを追加してみた。 - clouderの日記

ブランチ作ってやってみたよ!podはまだ書いてません><

ブランチはこちら↓

http://coderepos.org/share/browser/lang/perl/Encode-JP-Mobile/branches/convert-willcom-mail-pictogram

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

 |