[PHP-dev 1519] Re: 絵文字 <-> Unicode 6.0 変換

Shinya Muramatsu revulon @ gmail.com
2011年 8月 24日 (水) 06:17:45 JST


村松です。

> 下記の例は、以下のようなシンプルなコードで実現できます。
>
> $utf8  = mb_convert_encoding("\xF8\x9F", "UTF-8", "SJIS-Mobile#DOCOMO");
> $utf8 .= mb_convert_encoding("\xF6\x60", "UTF-8", "SJIS-Mobile#KDDI");
> $utf8_sb = mb_convert_encoding($utf8, "SJIS-Mobile#SOFTBANK","UTF-8");

エンコーディングに UTF-8 を指定した場合も絵文字が扱えるのであれば、
それで良いのですが、現状はそうなっていないようです。

$utf8_docomo = mb_convert_encoding("\xF8\x9F", "UTF-8-Mobile#DOCOMO",
"SJIS-Mobile#DOCOMO");
$utf8_kddi = mb_convert_encoding("\xF6\x60", "UTF-8-Mobile#KDDI-B",
"SJIS-Mobile#KDDI");
$sjis_softbank = mb_convert_encoding("\xEE\x98\xBE",
"SJIS-Mobile#SOFTBANK", "UTF-8-Mobile#DOCOMO");

このように、UTF-8-Mobile#xxx, SJIS-Mobile#xxx 間での変換を指定した場合は、
正しい答えが返ってくるのですが、

$utf8_docomo = mb_convert_encoding("\xF8\x9F", "UTF-8", "SJIS-Mobile#DOCOMO");
$utf8_kddi = mb_convert_encoding("\xF6\x60", "UTF-8", "SJIS-Mobile#KDDI");
$sjis_softbank = mb_convert_encoding("\xEE\x98\xBE",
"SJIS-Mobile#SOFTBANK", "UTF-8");

このように、変換元、変換先のエンコーディングとして UTF-8 を指定した場合は、
正しい変換結果が得られないようです。

お手数ですが、ご確認いただけますでしょうか?

--
Shinya Muramatsu <revulon @ gmail.com>


PHP-dev メーリングリストの案内