Показать сообщение отдельно
Старый 20.05.2010, 16:23   #1
LIDERSERVIS
Оператор ЭВМ
 
Регистрация: 20.10.2009
Сообщений: 49
Написано 2 полезных сообщений
(для 3 пользователей)
Кодировка / декодировка данных через сокет

Какие есть методы кодировки / розкодировки отправки данных через сокет (телефон не видит русские буквы через сокет - приходят карлюки), нужно включить аспект что могут в строчке идди как и руские так и английские буквы. пробывал через метод base64 - что то не получается . Кодую в Delphi (внизу) - забрасываю в decode_string библиотеки base64v3 - и снова получаю билиберду ?
Возможно я не так кодирую или в библиотеке не тот алгоритм розкодировки ?

function EncodeBase64(Value: String): String;
const
 
b64alphabet: PChar = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  
pad: PChar = '====';

  function 
EncodeChunk(const Chunk: String): String;
  var
    
W: LongWord;
    
i, n: Byte;
  
begin
    n 
:= Length(Chunk); W := 0;
    for 
i := 0 to n - 1 do
      
W := W + Ord(Chunk[i + 1]) shl ((2 - i) * 8);
    
Result := b64alphabet[(W shr 18) and $3f] +
              
b64alphabet[(W shr 12) and $3f] +
              
b64alphabet[(W shr 06) and $3f] +
              
b64alphabet[(W shr 00) and $3f];
    if 
n <> 3 then
      Result 
:= Copy(Result, 0, n + 1) + Copy(pad, 0, 3 - n);
  
end;

begin
  Result 
:= '';
  while 
Length(Value) > 0 do
  
begin
    Result 
:= Result + EncodeChunk(Copy(Value, 0, 3));
    
Delete(Value, 1, 3);
  
end;
end; 
(Offline)
 
Ответить с цитированием