У меня возникли проблемы с SMS-сообщением, которое я отправляю с помощью провайдера под названием Cymba.Кодирование £ в SMS-сообщении, отправленном через шлюз, не работает правильно
В основном я отправляю сообщение на них в соответствии с их спецификациями. URL-адрес закодирован.
Однако, когда сообщение посылается на мой телефону £ появляется с А впереди т.е.^А
Теперь C# строки Unicode по умолчанию, поэтому я перешел на кодировку ASCII и £ наезжает, как?.
Я попытался преобразовать строку сообщения в шестнадцатеричный, начиная с Unicode и ASCII-версий (так как через этот шлюз вы также отправляете сообщение как шестнадцатеричный). Однако такое же поведение происходит.
Я подозреваю, что это что-то делать со строкой кодирования как SMS поддерживает формат кодирования 7bit: GSM 03,38
Подозреваю также, что если я посылаю через Unicode я только получаю сообщение с 70 или 140 обугленного вместо стандарта 160.
Я совершенно новый для отправки SMS, поэтому любая помощь или совет будут оценены.
Итак, вопрос в том, как я могу получить свои строки C# в этом формате?
Обновление: Похоже, что шлюз - это тот, у кого проблема не в моем коде, поскольку я пытался заменить оскорбительное £ на 7-битное эквивалентное шестнадцатеричное значение, и это тоже не сработало. Ниже мой тестовый код, который может помочь другим в будущем:
byte pound = 0xA3;
byte GSMPound = 0x01;
string hexxedMsg = "";
System.Text.UnicodeEncoding encoder = new System.Text.UnicodeEncoding();
byte[] msgBytes = encoder.GetBytes(message);
foreach (byte byt in msgBytes)
{
if(byt == pound)
hexxedMsg += GSMPound.ToString("X");
else
hexxedMsg += byt.ToString("X2"); ;
}
Сделав несколько экспериментов я решил принять ваш ответ как уйдя усилие тестирования отправки 7bit закодированным сообщения Я нашел шлюз является один с проблемой. Поэтому ваш ответ ближе всего к решению. –