2017-01-10 12 views
2

ストリームから一部の文字(çéなど)を取得する際に問題が発生します。正しいコンテンツタイプのセットでWebClientが正しくデコードされない

ページが<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> であるため、client.Headers.Add("Content-Type", "text/html; charset=windows-1252");を追加しました。

WebClient client = new WebClient(); 
client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; rv:50.0) Gecko/20100101 Firefox/50.0"); 
client.Headers.Add("Accept-Language", "en-US,en;q=0.5"); 
client.Headers.Add("Accept-Encoding", "gzip, deflate"); 
client.Headers.Add("Content-Type", "text/html; charset=windows-1252"); //THIS IS IN <meta> TAG of page. 

Stream data = client.OpenRead("http://url"); 
StreamReader reader = new StreamReader(data); string s = reader.ReadToEnd(); 
data.Close(); reader.Close(); 

しかし、出力はいつものようにçéなどを返す:

Diogo Afonso, Bel�m 1:33:06 PM 
Pra�a de Dio, Bel�m 1:33:05 PM 

私の質問は、どのようにこれが正しいエンコーディングで何が起こっているのか?

編集Stream data = client.OpenRead (...) Close();client.DownloadString("http://url")に置き換えて動作させることができました。なぜ起こったのかを誰かが回答したら、それを受け入れられた答えとして選ぶでしょう。

+0

UTF8を試しましたか? –

+0

私はそれを 'Stream data = client.OpenRead(...)Close();'を 'client.DownloadString(" http:// url ")'に置き換えて動作させることができました。 – Dillinger

+0

解決策を回答として投稿できます。同じ問題に直面している他の人に役立つかもしれません。 –

答えて

0

私はそれを交換することによって動作させることができました。今、文字が正しくデコード

Stream data = client.OpenRead("http://url"); 
StreamReader reader = new StreamReader(data); string s = reader.ReadToEnd(); 
data.Close(); reader.Close(); 

string s = client.DownloadString("http://url"); 

で。

関連する問題