Многие из нас уже знают, что в одной sms можно передать до 160 латинских или до 70 русских символов. Однако конкретная причина такой дискриминации русскоязычной части населения не всем понятна. Я попытаюсь пролить свет на эту загадочную особенность sms.
Прежде всего, хочу окончательно запутать читателя, сказав, что максимальная длина sms (мы сейчас не имеем в виду так называемые long sms - длинные sms) составляет 140 байт. Это ограничение накладывается на уровне сигнальной сети SS7 и едино для всей сетей GSM (например, в сетях CDMA эта цифра еще меньше). Таким образом, у нас уже есть три числа - 160, 140 и 70. Будем разбираться с каждым по отдельности.
140 - максимальное количество байт, отводимое на тело sms. Здесь самое время вспомнить, что помимо текстовых sms существуют также и бинарные sms, которые служат для передачи рингтонов, изображений, данных по технологии OTA и т.п. Их максимальный размер составляет 140 байт.
160 - максимальное число латинских символов, которое можно передать в одной sms. На самом деле, это те же самые 140 байт - символы упаковываются с помощью процедуры 7-битной упаковки. Кодировка, используемая для передачи латинских символов, содержит 128 различных символов, для кодирования любого из них достаточно 7 бит вместо 8. Учитывая, что 140 байт - это 1120 бит, мы получаем, что в 140 байт можно вместить 160 7-битных символов.
70 - максимальное число русских букв, которые можно передать в одной sms. Причина такого резкого ограничения в том, что каждая русская буква занимает два байта, поскольку является подмножеством кодировки UCS2 (16-битная кодировка для Unicode-символов). При этом кодировка для всей sms едина, т.е. если используется хотя бы одна русская буква, то любой символ (даже латинский) будет занимать два байта.
Не все знают, что некоторые вполне обычные символы, которые обычно относятся к стандартной ASCII-кодировке, в GSM используют два знакоместа. Этих символов немного: ^ { } [ ] | \ ~
Использование таких символов в тексте, содержащем только латинские буквы, приведет к неожиданному уменьшению максимальной длины. Например, sms, состоящая из символов [], сможет вместить только 80 таких символов. Этот эффект не учитывается практически ни одним мобильным оператором - при отправке sms с сайта Вам разрешат набрать до 160 подобных символов наравне со всеми другими.
И еще один интересный момент - в эту же кодировку входят несколько греческих символов. Особенно интересно то, что часть из них выглядит точно так же, как русские буквы: Ф Г П Л
Эту особенность можно использовать для того, чтобы писать sms на русском языке латинскими символами. Есть довольно много букв латинского языка, которые выглядят точно так же, как русские буквы: E T O P A H K X C B M e u o p a n m 3 bI
Пример слов, целиком набранных латинскими буквами:
ТОР РОТ ТАНК МОРС TAPAHKA panmop TuTuKaKa MbI CHOBA PAHO BCTAEM u COHHO 3EBAEM.
Имея в запасе буквы Ф Г П Л, можно значительно расширить диапазон подобных текстов. При этом можно написать на русском языке сообщение длиной до 160 символов, поскольку на самом деле используются только латинские символы и греческие символы из той же кодировки. Правда, для этого нужно проявить недюжинную фантазию и богатство лексикона.
Автор статьи Алексей Соколов.
 
  |