• このエントリーをはてなブックマークに追加

Dim RequestURL As String = “http://www.yahoo.co.jp”
Dim httpObj As New MSXML2.ServerXMLHTTP
httpObj.open(“GET”, RequestURL, False)
httpObj.send()

とやったあと、httpObj.responseTextでページの内容が取れそうな気がするが、
ところがどっこいそうはいかない。

httpobjはバイナリ型で返ってくるので、responseTextで無理矢理テキスト表示すると文字化けした状態になる。
しかも、そのURLのページがどの文字コードで書かれているかは直接的にはわからない。

まず、httpObj.responseBody にバイナリ型でデータがかえってきてるので、
これをテキストに変換して表示してやる必要がある。

なので、私の場合は下記のようにして一通りの文字コードを指定して表示してみている。

Console.WriteLine(System.Text.Encoding.GetEncoding(“ISO-2022-JP”).GetString(httpObj.responseBody)))
Console.WriteLine(System.Text.Encoding.GetEncoding(“EUC-JP”).GetString(httpObj.responseBody)))
Console.WriteLine(System.Text.Encoding.GetEncoding(“UNICODE”).GetString(httpObj.responseBody)))
Console.WriteLine(System.Text.Encoding.GetEncoding(“UTF-7”).GetString(httpObj.responseBody)))
Console.WriteLine(System.Text.Encoding.GetEncoding(“UTF-8”).GetString(httpObj.responseBody)))
Console.WriteLine(System.Text.Encoding.GetEncoding(“SHIFT-JIS”).GetString(httpObj.responseBody)))

これで化けなかった文字コードのやつを使えば良い。

  • このエントリーをはてなブックマークに追加