code_junkie

In C#, how do I save a webpage to file without destroying whatever the encoding is?

Nov 12th, 2011
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. static void GetUrl(Uri uri, string localFileName)
  2. {
  3. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
  4. HttpWebResponse response;
  5.  
  6. response = (HttpWebResponse)request.GetResponse();
  7.  
  8. // Save the stream to file
  9. Stream responseStream = response.GetResponseStream();
  10. StreamReader reader = new StreamReader(responseStream, Encoding.Default);
  11. Stream fileStream = File.OpenWrite(localFileName);
  12. using (StreamWriter sw = new StreamWriter(fileStream, Encoding.Default))
  13. {
  14. sw.Write(reader.ReadToEnd());
  15. sw.Flush();
  16. sw.Close();
  17. }
  18. }
  19.  
  20. static void GetUrl(Uri uri, string localFileName)
  21. {
  22. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
  23. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  24. try
  25. {
  26. // Hope GetEncoding() knows how to parse the CharacterSet
  27. Encoding encoding = Encoding.GetEncoding(response.CharacterSet);
  28. StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
  29. using (StreamWriter sw = new StreamWriter(localFileName, false, encoding))
  30. {
  31. sw.Write(reader.ReadToEnd());
  32. sw.Flush();
  33. sw.Close();
  34. }
  35. }
  36. finally
  37. {
  38. response.Close();
  39. }
  40. }
  41.  
  42. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  43.  
  44. <?xml version="1.0" encoding="ISO-8859-1"?>
  45.  
  46. Content-Type: text/html; charset=ISO-8859-1
  47.  
  48. Stream responseStream = response.GetResponseStream();
  49. Encoding enc = Encoding.GetEncoding(response.CharacterSet);
  50. StreamReader reader = new StreamReader(responseStream, enc);
  51. Stream fileStream = File.OpenWrite(localFileName);
  52. using (StreamWriter sw = new StreamWriter(fileStream, enc))
  53. { /* ... */ }
Add Comment
Please, Sign In to add comment