Mb_strlen и android java показывают разные результаты для одинаковой длины символовJAVA

Программисты JAVA общаются здесь
Anonymous
Mb_strlen и android java показывают разные результаты для одинаковой длины символов

Сообщение Anonymous »

На PHP

Код: Выделить всё

echo mb_strlen('🌦')
результат: 1
В Android Java

Код: Выделить всё

"🌦".length()
результат — 2
Другой способ написать тот же символ/значок

Код: Выделить всё

"\uD83C\uDF26".length()
результат: 2
Кодировка Android

Код: Выделить всё

Charset defaultCharset = Charset.defaultCharset()
=> UTF=8

Код: Выделить всё

(new OutputStreamWriter(new ByteArrayOutputStream())).getEncoding()
=> UTF-8
Кодировка файла — UTF-8.
Вопросы
Почему Android Java показывает результат, отличный от mb_strlen?
Я предполагаю, что результат mb_strlen правильный, а длина равна 1. Как я могу заставить Java понять строку как вычислить длину до 1?
LE:
Проблема в том, что у меня есть строка, поступающая с PHP-сервера, например:
LENGTH|STRING...
пример: 5|juice3|aha3|yes
Если строка содержит '🌦', пример 7|sample🌦3| да, тогда Android Java посчитает его как 2 вместо 1 и неправильно проанализирует строку

Подробнее здесь: https://stackoverflow.com/questions/790 ... ter-length

Вернуться в «JAVA»