Ich habe Probleme mit einer SMS-Nachricht, die ich zu senden bin mit einem Anbieter namens Cymba.Encoding £ in SMS-Nachricht über Gateway gesendet funktioniert nicht richtig
Grundsätzlich Ich poste die Nachricht zu ihnen nach ihren Spezifikationen URL codiert.
jedoch, wenn die Nachricht auf mein Handy geschickt wird das £ erscheint mit einem A vor d £
Jetzt C# Strings Unicode standardmäßig sind, so wechselte ich zu ASCII-Kodierung und die £ kommt über wie?.
Ich habe versucht, den Nachrichtenstring in hex zu konvertieren, beginnend mit der Unicode- und der ASCII-Version (da über dieses Gateway auch die Nachricht als hex gesendet wird). Das gleiche Verhalten tritt jedoch auf.
Ich vermute, es ist etwas, mit der String-Codierung als SMS zu tun, unterstützt ein 7-Bit-Format codiert ist: GSM 03.38
Ich vermute, dass auch wenn ich über Unicode senden werde ich nur 70 oder 140 Zeichen Nachricht erhalten statt die Standard-160
bin ich ganz neu in SMS wird so jede Hilfe oder Beratung Senden geschätzt.
Die Frage ist also, wie kann ich meine C# Strings in diesem Format erhalten?
Update: Sieht aus wie das Gateway ist das mit dem Problem nicht mein Code, wie ich versuchte, die beleidigende £ mit dem 7bit äquivalenten Hex-Wert zu ersetzen und das hat auch nicht funktioniert. Siehe unten für meinen Test-Code, der anderen in Zukunft helfen kann:
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"); ;
}
getan zu haben einige Experimente habe ich beschlossen, die Antwort zu akzeptieren, wie um den Aufwand der Prüfung gegangen eines 7-Bit-codierten Nachricht zu senden habe ich festgestellt das Gateway ist die eins mit dem Problem. Ihre Antwort ist also der Lösung am nächsten. –