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")
に置き換えて動作させることができました。なぜ起こったのかを誰かが回答したら、それを受け入れられた答えとして選ぶでしょう。
UTF8を試しましたか? –
私はそれを 'Stream data = client.OpenRead(...)Close();'を 'client.DownloadString(" http:// url ")'に置き換えて動作させることができました。 – Dillinger
解決策を回答として投稿できます。同じ問題に直面している他の人に役立つかもしれません。 –