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