2013-12-19 4 views
2

Мне нужно перехватить запись и изменение эмоции для моего собственного смайлика. Когда я перехватываю смайлик, например, FACE WITH MEDICAL MASK (\ U + 1F604), я получаю char UTF-16 (0xD83D 0xDE04), можно ли преобразовать это значение char в значение unicode?Получите смайлик unicode от char UTF-16

Мне нужно преобразовать 0xD83D 0xDE04 в \ u1f604.

Благодаря,

ответ

3

я получаю UTF-16 символ (0xD83D 0xDE04) Можно ли преобразовать это значение обугленного к значению Юникода?

Для только одной кодовой точки в строке, вы можете преобразовать его в целое число с:

int codepoint = "\uD83D\uDE04".codePointAt(0); // 0x1F604 

Это, однако, довольно утомительно идти на целую строку с codePointCount/codePointAt. Тип String Java/Dalvik сильно привязан к кодовым единицам UTF-16, а методы codePoint - плохо интегрированные запоздалые идеи. Если вы просто надеетесь заменить emoji какой-либо другой строкой символов, вам, вероятно, лучше всего сделать замену простой строки или регулярное выражение с помощью двух блоков кода, как они появляются в типе String, например text.replace("\uD83D\uDE04", ":-D").

(BTW лицо с медицинской маской U + 1F637.)

0

\u1f604 является UTF-32 кодирование этого смайлика. Вы можете преобразовать так:

byte[] bytes = "\uD83D\uDE37".getBytes("UTF-32BE");