Пытаясь выяснить, почему смайлики вызывают отправку даже коротких сообщений в виде нескольких фрагментов, я наткнулся на этот вопрос , объяснив, что это происходит потому, что они закодированы в UTF-16, а не в ascii.
Теперь мой вопрос: есть ли способ отправить их в UTF-8 вместо этого? Большинство сообщений, которые я отправляю, содержат много латинских букв и очень мало других символов, поэтому все они должны быть намного короче, если закодированы в UTF-8: возможно ли это?
У меня Cyanogenmod 11-M12 (Android 4.4.4) и, если это имеет значение, я использую клавиатуру SwiftKey.
В случае, если это невозможно, дело в протоколе SMS, или в ОС, или даже в клавиатуре?
Большое спасибо!
К сожалению, это ограничение протокола SMS.
Кодировка «ascii» не является обычной, к которой мы привыкли в компьютерном мире, вместо этого она является 7-битной (или GSM 03.38 https://en.wikipedia.org/wiki/GSM_03.38 ) и очень ограниченной.
Если один единственный символ используется за пределами этой 7-битной кодировки, он переключается на UCS2 (дополнительную информацию о том, что UCS2 не является UTF-16, см. здесь https://en.wikipedia.org/wiki/UTF-16 ).
При 7 битах каждый символ занимает 7 бит (doh), а при UCS2 каждый символ занимает 16 бит.
При кодировании некоторых интеграций SMPP (протокола SMS) я видел спорадическую поддержку других наборов символов, но я не думаю, что это вообще принято в дикой природе.
ГигантДерево