Что такое кодировка по умолчанию / кодировка текстовых сообщений на устройствах Android? - PullRequest
3 голосов
/ 30 декабря 2010

Если нужно, чтобы все было просто, меня больше всего интересуют английские телефоны в Северной Америке.

В частности - при отправке / получении SMS и MMS-сообщений как кодируются символы? Есть ли разница?

Мое первоначальное исследование показало, что UTF-8 было значением по умолчанию, но я также видел ссылки на US-ASCII для устройств США и другие кодировки для других локалей.

Ответы [ 2 ]

3 голосов
/ 30 декабря 2010

Цитата:
Кодировка платформы по умолчанию - UTF-8.(Это отличается от некоторых более старых реализаций, где кодировка по умолчанию зависела от локали пользователя.)

Более подробную информацию можно найти здесь: Charset |Разработчики Android

0 голосов
/ 03 июля 2018

Краткий ответ для США - GSM 03.38 и UTF-16BE, если вы используете Emojis или текст, который GSM 03.38 не может кодировать напрямую.

При отправке / получении SMS-кода кодировка определенно не является UTF-8, поскольку она не поддерживается PDU или протоколом SMPP. Найдите спецификацию SMPP , чтобы выяснить, что поддерживается. Из всех поддерживаемых кодировок единственным вариантом, совместимым с Unicode, является UCS-2BE . Мое наблюдение состоит в том, что большинство телефонов (включая все Android и iPhone) просто предполагают это на самом деле UTF-16BE , потому что это позволяет использовать полный набор символов Unicode (включая такие вещи, как Emojis ?️) .

SMS также имеют специальные обязательные кодировки согласно спецификации GSM03.38 , основанной на септетах. Они допускают до 160 символов на PDU (так как при многих кодировках не все символы составляют 1 единицу кода).

MMS - это еще одно животное, которое не поддерживается далеко за пределами Северной Америки. Но для MMS-кодировки доступны следующие параметры (порядок байтов с прямым порядком байтов или порядка байтов, если он не указан):

  • US-ASCII
  • ISO-8859-1
  • ISO-8859-2
  • ISO-8859-3
  • ISO-8859-4
  • ISO-8859-5
  • ISO-8859-6
  • ISO-8859-7
  • ISO-8859-8
  • ISO-8859-9
  • SHIFT-JIS
  • UTF-8
  • BIG5
  • UTF-16

MMS, однако, обычно не используется, если вы не отправляете очень длинное сообщение (длиной более 4 PDU, что составляет 560 байт на Android) или если ваше сообщение содержит изображение или что-то, что не может быть закодировано в виде простого SMS.

Стоит также отметить, что MMS намного медленнее, чем SMS, поскольку использует протокол SMTP со специальной адресацией (не основанной на DNS) и специальными составными типами контента (подробности см. MM4 ).

...