MyTetra Share
Делитесь знаниями!
Кодировка русского текста в телефонах Siemens M50 (UCS2) при отправке SMS
Время создания: 13.05.2015 09:57
Раздел: Компьютер - Аппаратное обеспечение - Мобильные телефоны - Siemens M50
Запись: xintrea/mytetra_syncro/master/base/14315002316506fkxv2g/text.html на raw.github.com

Многие из тех кто интересовался темой наверно потратили кучу времени для создания и\или поиски алгоритма кодирования русского текста - ucs2.

Вот функция на Delphi которая это делает легко и быстро:


function ucs2(s: string): string;
var i,k: integer;
begin
for i:=1 to length(s) do begin
  k:= ord(s[i]);
  if k>=192 then k:= k + 1040 - 192;
  result:= result + inttohex(k,4)
end
end;


Функции отправляем текст на русском языке, на выходе получаем текст в нужной кодировке. Максимальная длина входного текста 70 символов.


Если вам по каким-то причинам нужно в одном смс отправлять более 70 символов, то можно воспользоваться вот этой функцией, она понимает текст только на латинице, но может содержать до 140 символов.


function TFormComPort.Encode7bit(Src:String):String;
var Dst:String;
    i:Integer;
    CurS,NextS:Byte;
    TStr:String;
begin
  for i:=1 to Length(Src) do begin
    if (i mod 8)=0 then Continue;
    TStr:=Copy(Src,i,1);
    CurS:=Ord(TStr[1]);
    if (i mod 8)>1 then
      CurS:=(CurS shr ((i mod 8)-1) );
    if i<Length(Src) then begin
      TStr:=Copy(Src,i+1,1);
      NextS:=Ord(TStr[1]);
    end else
      NextS:=0;
    NextS:=(NextS shl (8-(i mod 8)));
    Dst:=Dst+IntToHex(CurS+NextS,2);
  end;
  Result:=Dst;
end;



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования