Длинные СМС в параллельной вселенной

Всем известно что максимальная длинна смс на русском языке более чем в два раза меньше чем на английском (70 против 160). Это обусловлено тем какая кодировка используется при отправке. Для отправки СМС только на английском языке можно использовать 7-битную кодировку, то есть тратить по 7 бит данных на каждый символ. В 7-битной кодировке есть латинские буквы, цифры и знаки препинания - всего 128 символов.


Можно добавить всего лишь один бит в кодировку и расширить ее набор символов до 256. Это позволило бы добавить в нее весь русский алфавит и отправлять смски длинною 140 символов. Разница уже не такая значительная по сравнению с английскими смсками. Википедия говорит, что вообщем так и было сделано, но поддерживалось лишь малой частью телефонов и так и не стало популярно. А жаль, сколько бы денег мы сэкономили.


Надо сказать что сейчас при отправке смс используется Юникод - кодировка в которой на один символ требуется 16 бит. Это очень расточительно при максимальной длине смс в 1120 бит, но зато поддерживается значительная часть символов большинства стран.


Я думаю что если бы создатели смс знали заранее насколько будет популярна эта технология, то история могла бы пойти иначе. Кроме кодировок с фиксированным количеством бит на один символ существуют еще и алгоритмы сжатия которые используют меньшее число бит для часто встречающихся символов и большее число бит для символов которые встречаются довольно редко. Примером такого метода сжатия является алгоритм Хаффмана. Биты используемые для передачи каждого символа выстроены в особый порядок, что бы можно было понять где заканчивается один символ и начинается другой.


Если использовать такой алгоритм, то максимальная длинна смс не будет фиксированной, а будет зависеть от того, какие символы вы используете. Если вы будете использовать только популярные символы, например будете пользоваться только строчными буквами кириллицы, то максимальная длинна смс будет на 20% больше чем при использовании только латиницы в стандартных смс.


Я сделал реализацию данного алгоритма. При этом я добавил еще преобразование последовательности бит в набор символов из 7 битной кодировки. Таким образом теоретически можно отправить длинное сообщение даже через существующую систему смс. Вы можете преобразовать свой длинный русский текст в короткую последовательность латинских символов. Отправить ее, а получатель должен будет сделать обратное преобразование.


Конечно, можно было бы сделать мобильное приложение которое делало бы все преобразования автоматически, но кому это нужно в эпоху мессенджеров. Надеюсь в параллельной вселенной люди сделали смс длиннее.


Попробовать алгоритм можно здесь - https://kitay-pro.ru/longsms/shortsms.html