キャリア絵文字とUnicode
シンボル | Shift_JIS(CP932)+docomo絵文字仕様 | Unicode PUA docomo仕様 | Unicode PUA Google仕様 |
晴れ | SJIS-F89F | U+E63E | U+FE000 |
キャリア絵文字をAndroidブラウザで表示するには、Unicode PUA Google仕様に変換する。
(Android4.0.x はdocomo仕様のPUAを表示できなかったため。4.2.x辺りからdocomo仕様のPUAでも表示できるようになったようだ。)
また、Shift_JIS(CP932)+docomo絵文字仕様に対応がない文字を代替文字?に置換するには以下のようにする。
org.apache.commons.codec.net.URLCodec#decode(byte[] bytes)を使うのがポイント。
String ENCODING_UTF8 = "utf-8"; String ENCODING_MS932 = "ms932"; byte[] bytes = { (byte)0xf0, (byte)0xa0, (byte)0xae, (byte)0xb7, (byte)0x20, // 𠮷 (つちよし) (byte)0xe9, (byte)0x87, (byte)0x8e, (byte)0x20, // 野 (byte)0xe5, (byte)0xae, (byte)0xb6, (byte)0x20, // 家 (byte)0xee, (byte)0x98, (byte)0xbe, (byte)0x20, // [晴れ], U+E63E }; String originalMessage = new String(bytes, ENCODING_UTF8); byte[] decodedMessageBytes = new URLCodec().decode(originalMessage.getBytes(ENCODING_MS932)); String decodedMessage = new String(decodedMessageBytes, ENCODING_MS932); // decodedMessage は "? 野 家 [晴れ] " となる
参考: