Проблемы с кодировкой в Indy (Delphi)
Делал небольшую программулину для проверка занятости доменных имен на Delphi (Code Gear), решил использовать стандартный компонент Indy, вместо ожидаемой кириллицы получил кракозябры.
В инете нашел решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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; |
Ну, и сам вызов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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; |
Author: | Tags: /
| Rating:
Leave a Reply