Daniel
смотрите здесь:
http://www.dreamfabric.com/sms/default_alphabet.html
Вам необходимо преобразовать в 0x0B или 0x0C (в зависимости от столицы)
Сделать перевод для 7-битного GSM в ASCII (ваша кодировка) и наоборот.
Это сделает вашу жизнь проще.
Вот небольшой пример в Delphi (я знаю, что ООП запрашивает C #, но принцип остается прежним)
function CharsetLatin1ToGsm(v : string) : string;
var Ps,I : Integer;
Len : Integer;
c : Char;
begin
Result := '';
if v = '' then Exit;
Ps := 1;
Len := Length(v);
while Ps <= Len do
begin
c := v[Ps];
I := Latin1ToGsm[Byte(c)];
if I < 0 then
begin
Result := Result+#27+Chr(-I);
end
else
Result := Result+Chr(I);
Inc(Ps);
end;
end;
Маленькое объяснение:
v - исходная строка ввода.
каждый символ преобразуется в байт, который служит индексом для
Latin1ToGsm массив, который содержит аналоги алфавита GSM.
если возвращаемое значение меньше 0, это означает, что у нас есть расширенный символ (например, знак €), и это означает, что вам нужно отправить перед собой escape-символ (0x027).
EDIT
вот ссылка, которая объясняет, как это сделать в C #:
http://codeglobe.blogspot.com/2009/02/sending-sms-in-cnet-using-gsm-modem-and.html
* * 1025 Ура! * * 1026