其他转换网页编码的方法

今天在写ASP获取网页源码时看到ASP是通过adodb.stream来进行网页编码的转换,那么是否能在Delphi也实现呢,做了个测试,发现可行。

ASP的转换方法:

Function BytesToBstr(body,Cset)

    dim objstream

    set objstream = Server.CreateObject("adodb.stream")

    objstream.Type = 1

    objstream.Mode =3

    objstream.Open

    objstream.Write  body

    objstream.Position = 0

    objstream.Type = 2

    objstream.Charset = Cset

    BytesToBstr = objstream.ReadText 

    objstream.Close

    set objstream = nothing

End Function

以下是根据ASP代码转换的Delphi源码,需要注意的是获取源码后返回的是OleVariant的函数

Createoleobject使用时需要先uses Comobj

function GET_HTML (const URL : string):OleVariant; // XMLHTTP接口

Var

  XMLHTTP:IServerXMLHTTPRequest;

  HTML:TBytes;

begin

  try

    CoInitializeEx(nil,COINIT_MULTITHREADED);

    XMLHTTP:=CoServerXMLHTTP.Create;

    XMLHTTP.open('GET',URL,False,EmptyParam,EmptyParam);

    XMLHTTP.send(EmptyParam);



    Result:=XMLHTTP.responseBody;

  finally

    CoUnInitialize; // 释放内存

  end;

end;



function BytesToBstr(body:OleVariant;Cset:String):String;

var

  objstream: olevariant;

begin

  objstream := Createoleobject('adodb.stream');

	objstream.Type := 1;

	objstream.Mode :=3;

	objstream.Open;

	objstream.Write(body);

	objstream.Position := 0;

	objstream.Type := 2;

	objstream.Charset := Cset;

	Result := objstream.ReadText;

	objstream.Close;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

  Memo1.Text :=BytesToBstr(GET_HTML('http://www.baidu.com'),'utf-8');

end;

  这是一种另类的办法吧,您还可以参考下http://www.cnblogs.com/sishen/p/4297303.html这里的转换方法。

你可能感兴趣的:(编码)