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

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

01.01.2007
{ **** UBPFD *********** by kladovka.net.ru ****
>> URL кодирование строки
 
Функция производит так назваемое URL кодирование строк для 
использования в http запросах. Т.е. все алфавитно-цифровые 
символы и знак подчёикивания '_' остаются неизменными, 
пробел заменяется на '+', а все остальные символы на знак 
процента '%' с двумя шестнадцатеричными цифрами.
 
Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        27 мая 2002 г.
********************************************** }
 
function UrlEncode(Str: string): string;
 
function CharToHex(Ch: Char): Integer;
 asm
    and eax, 0FFh
    mov ah, al
    shr al, 4
    and ah, 00fh
    cmp al, 00ah
    jl @@10
    sub al, 00ah
    add al, 041h
    jmp @@20
@@10:
    add al, 030h
@@20:
    cmp ah, 00ah
    jl @@30
    sub ah, 00ah
    add ah, 041h
    jmp @@40
@@30:
    add ah, 030h
@@40:
    shl eax, 8
    mov al, '%'
end;
 
var
 i, Len: Integer;
 Ch: Char;
 N: Integer; P: PChar;
begin
 Result:='';
 Len:=Length(Str);
 P:=PChar(@N);
 for i:=1 to Len do begin
  Ch:=Str[i];
  if Ch in ['0'..'9', 'A'..'Z', 'a'..'z', '_'] then Result:=Result+Ch else begin
   if Ch = ' ' then Result:=Result+'+' else begin
    N:=CharToHex(Ch);
    Result:=Result+P;
   end;
  end;
 end;
end; 

Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
var
 S: string;
begin
 S:=UrlEncode('Мастера Delphi');
 ShellExecute(Handle, 'open',
  PChar('http://www.yandex.ru/yandsearch?text='+S), '', '', SW_SHOWNORMAL);
end;