Невозможно получить дополнительные escape-символы для работы в 7-битном алфавите GSM.

Я отправляю в SMSC, например, эту строку "[]", которая кодирует байту [] в шестнадцатеричном формате "1B3C201B3E" в соответствии с 7-битным алфавитом GSM, где "1B" является символом для дополнительных 10 символов, а 3C - ["и 3E"] "соответственно, но он не будет печатать правильно на моем мобильном телефоне, который печатает" <> ", потому что он печатает" 1B "как пробел, а" <"=" 3C "и"> "=" 3E ". Кроме того, он не может печатать ни одного из странных символов "èéùìòÇØøÅå € ÆæßÉ @¤¡ÄÖÑܧ¿äöñüà", но отлично работает с греческими символами. Это моя ошибка или это связано с конкретным SMSC? Правильно ли это байт []?

1
23 авг. '13 в 18:57
источник поделиться
2 ответов

Вы даете data_coding по умолчанию (0), что означает, что вы не укажете алфавит, используя в pdu. SMSC будет декодировать его, используя настроенный по умолчанию алфавит на стороне SMSC.

В вашем случае, похоже, что SMSC не настроен на использование GSM 7-бит по умолчанию. Возможный по умолчанию алфавит - латинский (ISO-8859-1), потому что на латыни 0x3C "<" и 0x3E ">", 0x1B не может быть распечатан, поэтому он переводится в космос.

Поэтому вы можете попытаться кодировать ваше сообщение в ISO-8859-1.

0
22 окт. '13 в 7:19
источник

Вам нужно выбрать один метод data_coding (или схему кодирования) на основе типа символов, который вам нужно использовать. Страница 136 документа спецификации протокола SMPPv4 показывает, какие кодировки данных вы можете использовать.

Затем, например, если вы выберете UCS2, вы можете создать msg.getBytes("UCS2") и установить для вашего datacoding значение 8, и это сделает любые отображаемые символы UCS2 хорошо отображаемыми в телефоне.

Я думаю, что если вам нужно использовать 7-битный алфавит GSM, вам нужно установить datacoding в 1, тогда вам нужен gsm 7-битный кодировщик алфавита, от строки до байтов, я думаю, что он недоступен в стандартном jdk

0
26 авг. '13 в 16:45
источник

Посмотрите другие вопросы по меткам или Задайте вопрос