lazarus wysyłanie sms - polskie znaki

0

Witajcie!
Napisałem króciutki programik, który potrafi wysyłać sms za pomocą komend AT (poprzez modem gsm).
Ale napotkałem problem z polskimi znakami. Doczytałem, że muszę przejść z kodowania GSM na UCS2

AT+CSCS="UCS2"

Cytat z innego forum:

Po uruchomieniu AT+CSCS="UCS2" każdy pojedynczy ciąg znaków musi być zakodowany w ten sposób, więc na przykład przełączenie z UCS2 na UTF-8 będzie następowało AT+CSCS="005500540046002D0038".

I tu pojawił się problem. Nie wiem jak przekonwertować string który chcę wysłać na kodowanie UCS2.
Czy są jakieś funkcje, które robią to automatycznie, czy też trzeba sobie napisać je samemu, a jeżeli tak, to na czym polega kodowanie UCS2?
Znalazłem jakieś funkcje konwertujące ale pomiędzy UTF8 a UTF16, nie ma nic na temat UCS2.

Pozdrawiam
Sc0li0sis

0

W module LConvEncoding znajdują się przydatne funkcje:

  • UTF8ToUCS2BE,
  • UTF8ToUCS2LE,
  • UCS2BEToUTF8,
  • UCS2LEToUTF8.

Wszystkie operują na łańcuchach typu String.

0

Wielkie dzięki za szybką odpowiedź.

Czy możesz podpowiedzieć mi jeszcze jak z ze stringu "UTF-8" otrzymać "005500540046002D0038". Z obu pierwszych funkcji wychodzi mi taki sam string #0U#0T#0F#0-#8 lub #0 po znaku (w zależności czy jest to big czy little endian)
Sc0sli0sis

0
var
  sin, sout: String;
  us: UnicodeString;
  i: Integer;
begin
  sin := 'UTF-8';
  sout := '';
  us := UnicodeString(sin);
  for i := 1 to Length(us) do
    sout := sout + IntToHex(Word(us[i]), 4);
  ShowMessage(sout);
end;  
0

Wielkie dzięki za pomoc
Sc0li0sis

1 użytkowników online, w tym zalogowanych: 0, gości: 1