ASP,VBSでAccessデータベース操作 他のホームページ(HTML)のソースの取得(取り込み)

ASPにより他のホームページからHTMLデータを取り込む。
2バイト文字(漢字)が「?」に変わる文字化けが文字コード変換を行って解決。

ASPで他のホームページの取得を行う。

私の場合は、MSXML2.ServerXMLHTTPでデータ取得、ADODB.Streamで文字コード変換を行った。

まず、MSXML2.ServerXMLHTTPでデータ取得を行う。

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=sjis">
<TITLE>Test</TITLE>
</HEAD>
<BODY>

<%
Url = "http://www.google.co.jp/webhp?sourceid=navclient&hl=ja&ie=EUP-JP"
Set objHTML = Server.CreateObject("MSXML2.ServerXMLHTTP")
objHTML.Open "GET", Url, false
objHTML.Send
Response.Write(objHTML.responseText)

%>

</BODY>
</HTML>

太字部分がGoogleのサイトのHTMLを取得している部分。
Urlに取得したいホームページアドレスを指定しする。
objHTML.Open "GET", Url, false、objHTML.SendでHTMLでソースを取得。
responseTextに取得したソースが入るようで、Response.Writeでホームページに書き出している。
これだと、Googleでは問題なく取得できるが、他のサイトでは、漢字部分が??に文字化けしてしまう。

そこで、ADODB.Streamで文字コード変換を行う。

太字部分に追加する。

Set objHTML = Server.CreateObject("MSXML2.ServerXMLHTTP")
Set objODB = Server.CreateObject("ADODB.Stream")
objHTML.Open "GET", Url, false
With objODB
.Open
.Type = 1 'バイナリデータ
.Write objHTML.
responseBody 'ADODB.Streamオブジェクトへ書き込み
.Position = 0
.Type = 2 'テキストデータ
.Charset = "_autodetect" '文字コードを自動検知
strHTML = .ReadText
.Close
End With

Response.Write(strHTML)

太字が追加した部分。

ADODB.Streamを使用した。詳しいことはASP,VBS命令集に書いていく。

ここで私がはまったのは、バイナリデータ(responseBody)を変換しなければならないこと。

下記のようにテキストデータ(responseText)を変換しても文字化けは改善されなかった。

.Type = 2 'テキストデータ
.WriteText objHTML.responseText

以上が注意点であって、これをクリアすれば、「??」の文字化けはせずに取り込める。

まだ、全てのページを試したわけではないので、今後文字化けするようであれば、都度改善していく。

 


実践!ASPでAccess操作