Написал программу которая переводит слова с русского на английский с помощью яндекс переводчика.
Но если делю ответ на строки после двоеточия то переведенное слово отображается в виде кодировки
например привет становится %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82.
Как это исправить ?
Пишу в Delphi 2010.
Если переводить с английского на русский то переводит нормально.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdBaseComponent,
IdCookieManager, StdCtrls, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack,
IdSSL, IdSSLOpenSSL;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
Button1: TButton;
IdCookieManager1: TIdCookieManager;
IdHTTP1: TIdHTTP;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Http : TidHttp;
CM : TidCookieManager;
post,stok: TStringList;
str,str2:string;
StrPage, UserID, UserName : String;
i ,p: integer;
begin
Http := TIdHTTP.Create(Self);
post := TStringList.Create;
stok := TStringList.Create;
Http.Request.Host:='translate.yandex.ru';
Http.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36';
Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8';
Http.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4';
Http.Request.AcceptCharSet:='utf-8,windows-1251;q=0.7,*;q=0.7';
Http.Request.Referer:='https://www.yandex.ru/';
post.Add('key=');
post.Add('text='+Edit1.text);
post.Add('lang=ru-en');
Memo1.Lines.Text := IdHTTP1.Post('https://translate.yandex.net/api/v1.5/tr.json/translate ?', post);
str:=IdHTTP1.Post('https://translate.yandex.net/api/v1.5/tr.json/translate ?', post);
p:=1;
while (length(str)+1 > p) do begin
if (str[p]= ':') or (p=length(str)) then
begin
stok.Add(str2);
str2:='';
end
else begin
str2:=str2+str[p];
end;
p:=p+1;
end;
memo2.Lines.Text:=stok.Text;
end;
end.