2011年7月27日水曜日

◆Webページをダウンロードする2

以前、Webページをファイルにダウンロードしてみたが、ダウンロードした内容を整形してファイルに落としたかったので、一旦文字列に取得してみた。

DownloadFileの代りにDownloadStringを使うだけ。
と思っていたのだが、結果を見てみると日本語が文字化けしている。
Webページのソースを見るとUTF8のようなのでUnicode(UTF16)に変換してあげれば良いのだろうと思い、一生懸命取得した文字列に対してコードを変換を試みたが、なんともかんともうまくいかない。

変換の仕方がおかしいのか・・・。
何か勘違いをしているような・・・。

あちこち彷徨い、やっとWebClientにはEncodingプロパティがあり、こいつにUTF8を指定してやると上手くいくことが判った。
(DownloadStringの引数にも用意してくれれば良いのに・・・)

このプロパティのデフォルトは「Default」なので基本的にはS-JIS。
なので、UTF8をS-JISとして読み込んだ文字列をUTF8だと思って変換しようとしていたので上手くいかなかったのだろう。

001
002
003
004
005

$source = "http://www.yahoo.co.jp/"
$wc = New-Object System.Net.WebClient 
$wc.Encoding = [System.Text.Encoding]::UTF8
$txt = $wc.DownloadString($source)
$txt

0 件のコメント:

コメントを投稿