スクレイピングしてみたら文字化けで困った場合の基礎知識
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)))
これで化けなかった文字コードのやつを使えば良い。