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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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