2016-12-14 10 views
1

webclientで文字列を取得しようとしていますが、日本語の文字がありますが、これらの文字が表示されています(^p Ǘ )。UTF-8でWebコンテンツを取得できません

var url= "http://www.itmedia.co.jp/im/articles/0609/14/news117.html"; 

using (var w = new WebClient()) 
{ 
    w.Encoding = Encoding.UTF8; 
    var htmlData= w.DownloadString(url); 
} 

json_dataの値に日本語の文字は表示されません。

UTF-8にエンコードしても、なぜ日本語の文字に変換されないのか教えていただけますか?

+1

Firefoxでダウンロードし、「ツール」 - >「ページ情報」を実行すると、実際にはエンコードがShift_JISになります。 'WebClient'が自動的にエンコーディングを検出する方法は、[この回答](http://stackoverflow.com/a/30049848/3744182)を参照してください。 – dbc

+0

@dbc ^それは完全に最良の答えです。ありがとう。 – Dean

答えて

1

ビュー・ソースの3行目によれば、シフトJISでエンコードされています:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html lang="ja" id="masterChannel-enterprise"><head> 
<meta http-equiv="content-type" content="text/html;charset=shift_jis"> 
+0

しかし、あなたがエンコーディングの権利を持っていない場合は、その行に到達することはできません。あなたがブラウザであれば、あなたがすることを想像してみてください。コードはUTF-8でエンコードされています。 –

0

郵便配達でページを開くと、返信のヘッダーが表示されます。

Postman

あなたが写真で見ることができるように、応答は、gzipで圧縮されています。それはおそらくあなたが見るスクランブルされた応答を引き起こしているでしょう。

WebClient現在、gzipの自動解凍はサポートされていますが、it wasn't that way alwaysです。 (Windows 10の.NET 4.6.2でコードを実行すると正しい結果が得られます)gzipの展開をサポートしていない古いバージョンの.NET Frameworkを対象としている可能性があります。リンクされたポストはそれを解決するはずです。

-1
var url = "http://www.itmedia.co.jp/im/articles/0609/14/news117.html"; 

       using (var w = new WebClient()) 
       { 
        w.Encoding = Encoding.GetEncoding("ISO-8859-1"); 
        var htmlData = w.DownloadString(url); 
       } 
0

IはシフトJISにUTF-8のコードを変更しました。

w.Encoding = Encoding.GetEncoding("shift_jis"); 
関連する問題