Сжать текст смс средствами J2me
Вот:
http://www.mobilab.ru/articles/94/ Наверно, все это уже читали. Мне нужно реализовать примерно такое же, но я не могу использовать BinaryMessage, так как смс будет отправляться не на мобилу, а на короткий платный номер, где приём и декодирование сообщения будет производить сервер. А смс билинги не поддерживают приём бинарных сообщений. В статье, которую я упомянул вначале, написано, что в обыкновенном сообщении используется 7-и битное кодирование (либо юникод, если встречаются символы, которые не влазят в 7-и битный диапазон). 7 бит - это значит 128 возможных символов. Я взял телефон и начал набирать все возможные символы, которые не переключают месаджбокс в юникод (телефон сименс с75, вверху он показывает сколько ещё можно ввести сообщений, по числу сразу понятно в каком режиме в данный момент набирается смс - юникод или 7-и битная латиница). В итоге я смог набрать больше 130 символов. О_о И кодирование показывает 7-и битное. Как так? Это же невозможно! Возможно ли, что просто телефон неправильно что-то считает и при отправке сообщение перекодируется в юникод и денег с меня снимут как за две смс? Но суть-то не в этом. Дело в том, что билинг принимает только одиночные смс (либо 70 символов в режиме юникода, либо 160 в режиме 7-и бит). А задача такая: нужно реализовать отправку сообщений на русском и английском языках + набор знаков препинания и основных спец символов, но 70 символов катастрафически мало. В той статье описан очень подходящий способ, но, как я уже сказал, билинг не принимает бинарные сообщения. По сути, какая разница, какое кодирование, общий размер данных-то в любом случае 1120 бит. НО! Я не знаю, как правильно представить данные в семибитном виде и скормить их в проге отправщику смс!!! Я вон вообще насчитал в семибитном кодировании больше 130 символов. Короче, помогите, подскажите! Советуйте всё, что только придёт на ум, главное по теме. У меня у брата можно смс бесплатно отправлять (с тела на тел, не в билинг), так что в тестинге можно не ограничиваться и не бояться упасть в минус =) - - - Добавил позже: Вот ещё по теме нашёл: http://isms.ru/article.shtml?art_7 |
Ответ: Сжать текст смс средствами J2me
Грубо говоря, задача сводится вот к чему:
1) У меня есть байтовый массив, размером 140 элементов (1120 бит, ровно размер одного смс сообщения), то есть данные, размером 140 байт (что в них, текст, картинка и т. п. - это не важно). 2) Нужно переделать этот массив в строку из 160 символов (в java символы в строке будут в юникоде, но при передаче в мессаджконнектор строка по ходу сама перекодируется в семибитную кодировку), которые позволено использовать при отправке смс на латинице. Ладно бы, если коды этих символов находились от 0 до 127, но я понятия не имею в каком порядке они в юникоде находятся и все ли из них входят в первые 128 байт! Статья, которую я упомянул в конце предыдущего сообщения вроде как приоткрывает завесу, надо придумывать что-то. Вот только брат, засранец, отключил услугу бесплатных смс сегодня. Теперь смс платные :'( |
Ответ: Сжать текст смс средствами J2me
|
Ответ: Сжать текст смс средствами J2me
Ээээ... Как-то не в тему. Мне спецификация юникода и utf-8 уже во сне снится =) Тут же нужно в семибитную кодировку переделать. Точнее даже преобразовать массив байт в строку, состоящую из символов, которые при использовании в смс преобразуются в семибитное представление при передаче смс. Во как. гг
|
Ответ: Сжать текст смс средствами J2me
Ой. Огромное сорри. Вторую ссылку в первом посте написал такую же, как и первую. Скопировал не от туда, откуда надо видимо. Исправил. Теперь ссылка та.
|
Ответ: Сжать текст смс средствами J2me
Так. Кажется придумал как сделать. Подскажите, как в java байты мне в семибитное представление переделать? То есть у меня есть 140 байт в массиве, а мне нужно переделать их в другой массив из 160 элементов, каждый должен иметь вид 0xxxxxxx. Пример:
Было: b[0] = 00000000 b[1] = 11001100 b[2] = 11111111 Стало: b[0] = 00000000 b[1] = 00110011 b[2] = 00011111 b[2] = 01110000 Это я схематично объяснил. Короче мне нужно как-то массив байт на биты разложить и их разделить в другой массив, но уже по семь бит. Блин, никогда с подобным не сталкивался, сложно объяснить. |
Ответ: Сжать текст смс средствами J2me
|
Ответ: Сжать текст смс средствами J2me
ВО!!! Там пример очень хороший! Где "Пример кодирования" примерно так мне и надо сделать как-то! Как мне такое в Java замутить?
- - - А ведь в base64 похожая система, да? Тут где-то либа для мидлет паскаля была для этого, попробую её декомпильнуть. |
Ответ: Сжать текст смс средствами J2me
Вот блин. Сейчас я буду жёстко ламерить. Нифига не понял эту строку:
head=bytes[0]&0xff|bytes[1]<<8&0xff00; Видимо какие-то операции с битами. Объясните плиз, как оно работает или дайте ссылку какую-нибудь полезную, желательно на русском. |
PHP код:
PHP код:
Цитата:
| - дизъюнкция << - сдвиг влево |
Ответ: Сжать текст смс средствами J2me
Цитата:
|
Ответ: Сжать текст смс средствами J2me
Прочитал я про конъюнкцию и дизъюнкцию. Круто! Как я раньше про такое не слышал??? Это ж такие интересные штуки можно вытворять!!! Сейчас ещё про сдвиги почитаю!
|
Ответ: Сжать текст смс средствами J2me
Так. Работа идёт. Сейчас нужно сделать массив из 128 символов, которые допускается отправлять в смс в режиме семибитки. Список, который находится по ссылке из первого поста не катит. С ним точно что-то не так. Если я беру из него все 128 символов, и вставляю в редактор смс, то телефон включает режим юникода =( Что делать? У меня тупая просьба. Попробуйте ввести в редакторе смс все символы, которые только позволяет телефон, и которые не переводят редактор в режим юникода. Напомню, в режиме семибитки в одно смс влазит 160 символов, а в режиме юникода - 70. Надеюсь на помощь. Потому что в нете не нашёл ничего путного =(
|
Ответ: Сжать текст смс средствами J2me
Ура, товарищи!!! Нашёл статью: http://www.rattler.kiev.ua/node/16
Она пролила на всё свет!!! Теперь всё встало на свои места! |
Ответ: Сжать текст смс средствами J2me
Так. В таблице, которая находится в википедии, ошибка. Там регистр одного символа не верен. Надо "з" вместо "З". 127 символов, все кроме [ESC] подходят! И отправляются в одиночном смс. Но вот незадача. Я не знаю, что за [ESC] символ. Если верить википедии, то это цитирую:
Цитата:
|
Часовой пояс GMT +4, время: 05:35. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot