天天看點

Delphi中URL的編碼與解碼,即urlencode的使用

一、URL簡介

    URL是網頁的位址,比如 ​​​http://www.shanhaiMy.com​​​。Web 浏覽器通過 URL 從 web 伺服器請求頁面。

    由于URL字元串常常會包含非ASCII字元,URL在傳輸過程中,往往出現錯誤。是以,可以将非字元串字元,讓一些特殊ASCII字元組合,代替非ASCII字元。這就是編碼轉換,當字元串傳輸後,可以傳回原RUL字元串(解碼)。

    URL隻能使用 ASCII 字元集來通過網際網路進行發送。URL編碼,就是會将RUL字元轉換為可通過網際網路傳輸的格式。

    URL編碼使用“%”其後跟随兩位的十六進制數來替換非 ASCII 字元。比如“®”用“%A9”代替。

    URL不能包含空格。URL編碼通常使用“+”來替換空格。

二、RUL編碼與解碼

    1、uses HttpApp;

    2、編碼,先UTF8編碼,然後再URL編碼,不然和标準的url_encode()編碼結果不一緻,查詢結果自然不是預期的

    S2 := HttpEncode(UTF8Encode(S1));

    3、解碼,先URL解碼,然後再UTF8解碼,否則結果是亂碼。

    S1 := UTF8Decode(HttpDecode(S2));

三、RUL編碼與解碼舉例

uses 
  Httpapp; 

...
begin
  S := HttpEncode(UTF8EnCode('中文'));
  //或者:
  //S := HttpEncode(AnsiToUtf8('中文'));
end;      
uses
  IdURI;

..
begin
  S := TIdURI.URLEncode(str);
//
  S := TIdURI.URLDecode(str);
end;