これが私がこれまでに得たものです(それは機能しません)。この時点で、ターゲットは Ansi エンコードされていると思っていましたが、現時点では知りたくありません。私のブラウザは、使用するエンコーディングを判断できるようですが、どうすればよいですか?
static void GetUrl(Uri uri, string localFileName)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
// Save the stream to file
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream, Encoding.Default);
Stream fileStream = File.OpenWrite(localFileName);
using (StreamWriter sw = new StreamWriter(fileStream, Encoding.Default))
{
sw.Write(reader.ReadToEnd());
sw.Flush();
sw.Close();
}
}
回答後(現在、UTF-8 サイトでのみテストされています):
static void GetUrl(Uri uri, string localFileName)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
try
{
// Hope GetEncoding() knows how to parse the CharacterSet
Encoding encoding = Encoding.GetEncoding(response.CharacterSet);
StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
using (StreamWriter sw = new StreamWriter(localFileName, false, encoding))
{
sw.Write(reader.ReadToEnd());
sw.Flush();
sw.Close();
}
}
finally
{
response.Close();
}
}