October 11, Unicode Consortium released Unicode Version 6.0 including Emoji code points and the mapping table. Then, today, I've just shipped Encode::JP::Emoji version 0.60 which supports encoding conversion for variant emojis between Unicode 6.0 and Japanese mobile phone carriers as a fast pure Perl module.
use Encode;
use Encode::JP::Emoji;
my $sun = "\xF8\x9F";
Encode::from_to($sun, 'x-sjis-e4u-docomo', 'x-utf8-e4u-unicode');
# U+2600
my $watch = encode_utf8 "\x{231A}";
Encode::from_to($watch, 'x-utf8-e4u-unicode', 'x-utf8-e4u-kddiapp');
# U+E57A
The code above means:
$sun: from DoCoMo's F8F9 (Shift_JIS) to Unicode 6.0's U+2600.
$watch: from Unicode 6.0's U+231A to KDDI's U+E57A (UTF-8).
Encode::JP::Emoji's Encodings
Encode::JP::Emoji modules provides numbers of encodings.
Check the figures below to see which encoding to fit for your use.
Group #1 uses each carrier's private code points as Perl's internal string which has UTF-8 flag on.
Group #2 uses Googles's private code points internaly. This means Google's encoding could be the interchange encoding for others.
Group #3 also uses Google's internal.
See Unicode 6.0's emojis are supported here.
Tha last group #4 rejects any emojis above.
Use this group with FB_EMOJI_TEXT fallback function.
For more detail, see POD documents on CPAN.
* Original post of this is posted in Japanese.