Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

HTTP кодирование строки

01.01.2007
function HTTPEncode(const AStr: string): string;
 
const
   
NoConversion = ['A'..'Z', 'a'..'z', '*', '@', '.', '_', '-'];
 
var
   
Sp, Rp: PChar;
 
begin
   
SetLength(Result, Length(AStr) * 3);
   
Sp := PChar(AStr);
   
Rp := PChar(Result);
   
while Sp^ <> #0 do
   
begin
     
if Sp^ in NoConversion then
       
Rp^ := Sp^
     
else if Sp^ = ' ' then
       
Rp^ := '+'
     
else
     
begin
       
FormatBuf(Rp^, 3, '%%%.2x', 6, [Ord(Sp^)]);
       
Inc(Rp, 2);
     
end;
     
Inc(Rp);
     
Inc(Sp);
   
end;
   
SetLength(Result, Rp - PChar(Result));
 
end;
 
 
 procedure TForm1
.Button1Click(Sender: TObject);
 
begin
   Edit1
.Text := HTTPEncode(Edit1.Text);
 
end;

Взято с сайта: https://www.swissdelphicenter.ch