utf-8の絵文字であれば、普通にx-utf8-(imode|kddi|softbank)を使って相互変換できます。
たとえばDoCoMoの絵文字がDBに格納されている場合。
my $decoded = decode($data_from_db, "x-utf8-kddi"); my $output = encode($decoded, "x-sjis-kddi-auto");
というかんじにすれば、DoCoMoの絵文字(utf-8)をKDDIの絵文字(utf-8)に変換して、sjisの絵文字に変換した$outputを得られる。
ちなみに「x-sjis-kddi-auto」は「x-sjis-kddi」でもOK。なぜなら、「x-sjis-kddi」と「x-sjis-kddi-auto」はencodeにおいては等価だから。詳しくは g:mobilehacker:id:tokuhirom:20080117:1200556730 をどうぞ。