解決中文亂碼問題 獲取任意網頁程式碼
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
我們在使用C#獲取某個網頁程式碼時,經常會遇到中文亂字元的問題:
WebRequest request = WebRequest.Create(textBox2.Text);
WebResponse response = null;
try
{
response = request.GetResponse();
}
catch (Exception exc)
{
}
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default); //這裡使用了Encoding.Default,但有時還是免不了出現亂碼!
string tempCode = sr.ReadToEnd();
resStream.Close();
sr.Close();
做了改進:
static string GetHtml(string url, Encoding encoding)
{byte[] buf = new WebClient().DownloadData(url);
if (encoding != null) return encoding.GetString(buf);
string html = Encoding.UTF8.GetString(buf);
encoding = GetEncoding(html);
if (encoding == null || encoding == Encoding.UTF8) return html;
return encoding.GetString(buf);
}
// 根據網頁的HTML內容提取網頁的Encoding
static Encoding GetEncoding(string html)
{
string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)";
string charset = Regex.Match(html, pattern).Groups["charset"].Value;
try { return Encoding.GetEncoding(charset); }
catch (ArgumentException) { return null; }
}
//呼叫方法:
string url="http://www.fhcy88.com";
string tempCode = GetHtml(url, null); //不知道編碼時,第二個引數用null