会者简单,很容易的问题(100分)

  • 主题发起人 主题发起人
  • 开始时间 开始时间

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在IE的地址栏里,把空格编码成%20(别的一字符如汉字和其它符号,IE的地址栏同样也将其编码)叫什么编码?
除了nmurl可以解码外还有什么方式解码??
 
又有什么编码了? 就是把它用ASCII码来表示且前面加个%号罢了
编码:
procedure TForm2.Button1Click(Sender: TObject);
var
I: Integer;
S: string;
begin
S := Edit1.Text;
Edit2.Clear;
for I := 1 to Length(S) do
begin
Edit2.Text := Edit2.Text + '%' + IntToHex(Ord(S), 2);
end;
end;

解码?:
procedure TForm2.Button2Click(Sender: TObject);
function GetSubStr(S: string; Index: Integer; Separator: string = ','): string;
var
I, P: Integer;
begin
if Index < 1 then Exit;
if (S <> '') and (S[Length(S)] <> Separator) then
S := S + Separator;
for I := 1 to Index - 1 do
begin
P := System.Pos(Separator, S);
Delete(S, 1, P);
end;
Result := Trim(Copy(S, 1, System.Pos(Separator, S) - 1));
end;
function FStrToInt(S: Char): Integer;
begin
case S of
'0': Result := 0;
'1': Result := 1;
'2': Result := 2;
'3': Result := 3;
'4': Result := 4;
'5': Result := 5;
'6': Result := 6;
'7': Result := 7;
'8': Result := 8;
'9': Result := 9;
'A', 'a': Result := 10;
'B', 'b': Result := 11;
'C', 'c': Result := 12;
'D', 'd': Result := 13;
'E', 'e': Result := 14;
'F', 'f': Result := 15;
else
Result := 0;
end;
end;
var
I: Integer;
S: string;
TmpS: array of Char;
begin
I := 0;
repeat
Inc(I);
S := GetSubStr(Copy(Edit2.Text, 2, MAXINT), I, '%');
if Length(S) = 2 then
begin
SetLength(TmpS, Length(TmpS) + 1);
TmpS[High(TmpS)] := Chr(FStrToInt(S[1]) * 16 + FStrToInt(S[2]));
end;
until S = '';
Edit1.Text := Trim(PChar(TmpS));
end;

 
很久以前写的, 第二段可以简化一下:
procedure TForm2.Button2Click(Sender: TObject);
function GetSubStr(S: string; Index: Integer; Separator: string = ','): string;
var
I, P: Integer;
begin
if Index < 1 then Exit;
if (S <> '') and (S[Length(S)] <> Separator) then
S := S + Separator;
for I := 1 to Index - 1 do
begin
P := System.Pos(Separator, S);
Delete(S, 1, P);
end;
Result := Trim(Copy(S, 1, System.Pos(Separator, S) - 1));
end;
var
I: Integer;
S: string;
TmpS: string;
begin
I := 0;
repeat
Inc(I);
S := GetSubStr(Copy(Edit2.Text, 2, MAXINT), I, '%');
if Length(S) = 2 then
begin
SetLength(TmpS, Length(TmpS) + 1);
TmpS[Length(TmpS)] := Chr(StrToInt('$' + S));
end;
until S = '';
Edit1.Text := Trim(TmpS);
end;
 
刚好我在公司刚写完一个有关的程序,delphi中有相关的函数的。不用自己
写的。
HTTPEncode和HTTPDecode。
 
那用中文发到E文网站应该用什么编码?有源码吗?
 
呵呵,中英文是一样的。
 
real_clq,说得对
 
浏览器是基于字节流的!
 
thx各位了
 

Similar threads

回复
0
查看
845
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部