■46351 / inTopicNo.1) |
WEB上の文字列をうまくエンコードできない場合があるのですが |
□投稿者/ みずむす (1回)-(2010/01/31(Sun) 01:25:12)
|
分類:[VB.NET/VB2005 以降]
恐れ入ります。みずむすと申します。
VB.NETでグーグルサジェストを取得できないかなあ、と色々やったところこのように
http://suggestqueries.google.com/complete/search?hl=ja&qu=ここにキーワード
すると取得できるらしいとわかったため、簡単なプログラムを書いてみたところ あっさりと取得出来ていました。
--- そのときのソース 以下は”夫”と検索した場合 --- Dim wc As New System.Net.WebClient() Dim st As System.IO.Stream = wc.OpenRead("http://suggestqueries.google.com/complete/search?hl=ja&qu=%E5%A4%AB") 'UTFで読み込んでしまう Dim sr As New System.IO.StreamReader(st) textbox.text = sr.ReadToEnd() ------------------------------------------------------
しかし本日起動してみると、文字化けするようになってしまいました。 グーグルがなにか仕様変更かな?と思ったのですが、 firefoxでこのURL を開いてみると、なんの問題もなくエンコードUTF8で表示出来ています。
原因分からないまま、試しにUTF8でエンコードすればいいのかと思い、取得部分をいかのように変更してみましたが、 文字化けはそのまま・・・
Dim sr As New System.IO.StreamReader(st) ↓ Dim sr As New System.IO.StreamReader(st, System.Text.Encoding.GetEncoding(65001)) ------------------------------
で、いろいろ悩んでいたんですが、 実はIEでこのURLにアクセスするとブラウザには表示できず、ダウンロードになります。
で、ダウンロードファイルを開くと結果が出ているわけですが、 もしかして一度ダウンロードすればいいのかも・・・ということで以下のようにダウンロードすると、 文字化けせずにきちんとUTF8にてファイルに書き込まれてきました。 ------------------------------ Dim wc As New System.Net.WebClient() wc.DownloadFile("http://suggestqueries.google.com/complete/search?hl=ja&qu=%E5%A4%AB", "C:\download.txt") wc.Dispose() ------------------------------
とすると、 URLアクセス→ファイル書き込み→読み込み→テキストボックスに書く とすればなんとかなることは分かりましたが、どうも納得できません。
これはどうしてなのでしょうか・・・???
|
|