Hatena::ブログ(Diary)

no strict; no life;

2009-07-02

Encode::JP::Emojiでの相互変換

utf8(docomo)
↓
sjis(kddi)

ってやる方法は、

utf8(docomo)
↓ x-sjis-emoji-docomoでencode
sjis(docomo)
↓ x-sjis-e4u-docomoでdecode
utf8(google)
↓ x-sjis-e4u-kddiでencode
sjis(kddi)

のようにするので合ってるかな?かな?

つまりは相互変換するときはGoogleUTF-8を経由しないといけないということなんだろうか?

実際以下のコードだと動くのでそうなのかな。

use Encode::JP::Mobile;
use Encode::JP::Emoji;

my $kddi = "\xF6\x59";
my $docomo = "\xF9\xDC";

# Encode::JP::Mobile
warn $kddi eq encode( 'x-sjis-kddi-auto', decode( 'x-sjis-imode', $docomo ) ); # true

# Encode::JP::Emoji
my $docomo_str = decode( 'x-sjis-emoji-docomo', $docomo );
my $docomo_octet = encode( 'x-sjis-emoji-docomo', $docomo_str );
my $google_str = decode( 'x-sjis-e4u-docomo', $docomo_octet );
warn $kddi eq encode( 'x-sjis-e4u-kddi', $google_str ); # true

追記:

↓これでもできるようですね。

warn $kddi eq encode( 'x-sjis-e4u-kddi', decode( 'x-sjis-e4u-docomo', $docomo ) ); # true

Encode::JP::Emojiをつかってみて思ったこと

これはイイとおもって実践で使えるかどうか考えてる間に思ったことをつらつら書きます。


流れ的に正しいし便利だなーと思ったのですがUnicodeに入るのが前提かなぁ。

まぁ思い切ってGoogleコードポイントDBに入れちゃってもいいきもするけど。

実装みたらtrを使って置換してるんですね。すげー。


ということでもうちょっとGoogleUnicode絵文字を見守ってみたいと思います。