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)
のようにするので合ってるかな?かな?
つまりは相互変換するときはGoogleのUTF-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