如何在delphi 7中的某个控件解决url地址的编码和解码问题! |
答題得分者是:Vicen
|
dragon100
一般會員 發表:20 回覆:11 積分:6 註冊:2004-06-29 發送簡訊給我 |
|
Vicen
高階會員 發表:13 回覆:145 積分:151 註冊:2005-03-14 發送簡訊給我 |
使用UrlEncode进行编码,UrlDecode进行解码。
function UrlEncode(const DecodedStr: String; Pluses: Boolean): String; {Pluses parameter specifies whether spaces will be encoded as ' ' or as ' '} var I: Integer; begin Result := ''; if Length(DecodedStr) > 0 then for I := 1 to Length(DecodedStr) do begin if not (DecodedStr[I] in ['0'..'9', 'a'..'z', 'A'..'Z', ' ']) then Result := Result '%' IntToHex(Ord(DecodedStr[I]), 2) else if not (DecodedStr[I] = ' ') then Result := Result DecodedStr[I] else begin if not Pluses then Result := Result ' ' else Result := Result ' '; end; end; end; function UrlDecode(const EncodedStr: String): String; var I: Integer; begin Result := ''; if Length(EncodedStr) > 0 then begin I := 1; while I <= Length(EncodedStr) do begin if EncodedStr[I] = '%' then begin Result := Result Chr(HexToInt(EncodedStr[I 1] EncodedStr[I 2])); I := Succ(Succ(I)); end else if EncodedStr[I] = ' ' then Result := Result ' ' else Result := Result EncodedStr[I]; I := Succ(I); end; end; end; function HexToInt(HexStr: String): Int64; var RetVar : Int64; i : byte; begin HexStr := UpperCase(HexStr); if HexStr[length(HexStr)] = 'H' then Delete(HexStr,length(HexStr),1); RetVar := 0; for i := 1 to length(HexStr) do begin RetVar := RetVar shl 4; if HexStr[i] in ['0'..'9'] then RetVar := RetVar (byte(HexStr[i]) - 48) else if HexStr[i] in ['A'..'F'] then RetVar := RetVar (byte(HexStr[i]) - 55) else begin Retvar := 0; break; end; end; Result := RetVar; end; |
dragon100
一般會員 發表:20 回覆:11 積分:6 註冊:2004-06-29 發送簡訊給我 |
|
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
|
evapig_61857
一般會員 發表:0 回覆:1 積分:0 註冊:2006-09-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |