var 
FHTTPClient:TIdHTTP; 
begin 
   FHTTPClient := TIdHTTP.Create( Self ); 
     with FHTTPClient do 
        begin 
          Disconnect; 
          Request.Pragma :=  'no-cache '; 
          Request.CacheControl :=  'no-cache '; 
          Request.Connection :=  'close '; 
          ReadTimeout  := 1000 * 60 * 1;//1分钟超时 
          memo1.Text :=Get(  'http://hk.news.yahoo.com/busi/general/prnewswire/ ' ); 
        end; 
    freeandnil(FHTTPClient); 
end; 
本代码读取上面网页时会发生乱码,从网上找到 
function GBOffset(value: string): integer; 
begin 
if length(value)  >= 2 then 
Result := (Ord(value[1]) - 161) * 94 + (Ord(value[2]) - 161) 
else 
Result := -1; 
end; function BIG5Offset(value: string): integer; 
begin 
Result := -1; 
if length(value)  >= 2 then 
begin 
if (Ord(value[2])  >= 64) and (Ord(value[2])  <= 126) then 
Result := (Ord(value[1]) - 161) * 157 + (Ord(value[2]) - 64); 
if (Ord(value[2])  >= 161) and (Ord(value[2])  <= 254) then 
Result := (Ord(value[1]) - 161) * 157 + 63 + (Ord(value[2]) - 161); 
end 
end; function WordToString(value: Word): string; 
begin 
Result := Chr(Hi(value)) + Chr(Lo(Value)); 
end; function isBIG5(value: string): Boolean; 
begin 
if (length(value) >=2) then 
begin 
if (value[1]  < #161) then 
Result := false 
else 
if ((value[2]  >= #64) and (value[2]  <= #126)) or ((value[2]  >= #161) and (value[2]  <= #254)) then 
Result := true 
else 
Result := false 
end 
else 
Result := false 
end; function isGB(value: string): Boolean; 
begin 
if (length(value) >=2) then 
begin 
if (value[1]  <= #161) and (value[1]  >= #247) then 
Result := false 
else 
if (value[2]  <= #161) and (value[2]  >= #254) then 
Result := false 
else 
Result := true 
end 
else 
Result := true; 
end; function GBtoBIG5(value: string): string; 
var 
leng, idx : integer; 
tmpStr : string[2]; 
Offset : integer; 
output : string; 
begin 
output :=  ' '; 
leng := length(value); 
idx := 1; 
while idx  <= leng do 
begin 
tmpStr := value[idx]+ value[idx + 1]; 
if isGB(tmpStr) then 
begin 
offset:=GBOffset(tmpStr); 
if (offset  >= 0) and (offset  <= 8177) then 
begin 
output := output + WordToString(GBOrder[offset]); 
inc(idx); 
end 
else 
output := output + value[idx] ; 
end 
else 
output := output + value[idx] ; inc(idx, 1); 
end; 
Result := output; 
end; function BIG5toGB(value: string): string; 
var 
leng, idx : integer; 
tmpStr : string[2]; 
output : string; 
offset : integer; 
begin 
output :=  ' '; 
leng := length(value); 
idx := 1; 
while idx  <= leng do 
begin 
tmpStr := value[idx]+ value[idx + 1]; 
if isBIG5(tmpStr) then 
begin 
offset:=BIG5Offset(tmpStr); 
if (offset  >= 0) and (offset  <= 14757) then 
begin 
output := output + WordToString(BIG5Order[offset]); 
inc(idx); 
end 
else 
output := output + value[idx]; 
end 
else 
output := output + value[idx]; inc(idx); 
end; 
Result := output; 
end; 此方法进行 
 memo1.Text := big5togb(memo1.Text ); 
也一样得不到正确的结果,急着求助,谢谢!