X

Проблемы с кодировкой в Indy (Delphi)

Делал небольшую программулину для проверка занятости доменных имен на Delphi (Code Gear), решил использовать стандартный компонент Indy, вместо ожидаемой кириллицы получил кракозябры.

В инете нашел решение:

    function RussianToUnicode(S: String): String;  
    var Wrd:Word;  
      pW,pR:PWord;  
      len:Integer;  
    begin  
      pW:=@S[1];  
      len:=Length(S);  
      SetLength(Result,len);  
      pR:=@Result[1];  
      while Len<>0 do begin  
        Wrd:=pW^;  
        case Wrd of  
          $C0..$DF,$E0..$FF:pR^:=Wrd+50;  
          else pR^:=Wrd;  
        end;  
        inc(pW);  
        inc(pR);  
        dec(Len);  
      end;  
    end;

Ну, и сам вызов

    procedure TForm1.Button1Click(Sender: TObject);  
    var PostData:TStringList;  
    var url:string;  
    begin  
      url='http://xxxxx/check_domains.html';  
      try  
        PostData:=TStringList.Create;  
        PostData.Add('dname='+trim(edit1.Text));  
        if (checkbox2.Checked) then PostData.Add('dzone2=on');  
        ...  
        if (checkbox1.Checked) then PostData.Add('dzone15=on');  
        ret:=RussianToUnicode(IdHTTP1.Post(url, PostData));  
      finally  
        PostData.Free;  
        IdHTTP1.Disconnect;  
      end;  
      ...  
    end;
Категории: Delphi
Тэги: Indy