在网络程序开发中,经常要与网页源码打交道,因为与服务器交互,直接使用HTTP协议是最简单的。下面的方法解决了在下载UTF8编码的源码时乱码的问题。
private void button1_Click(object sender, RoutedEventArgs e)
{
WebClient webClient = new WebClient();
webClient.DownloadDataCompleted += new DownloadDataCompletedEventHandler(webClient_DownloadDataCompleted);
//添加下载完成事件处理器,在异步数据下载完成时触发
webClient.DownloadDataAsync(new Uri("http://www.pocketdigi.com"));
//异步下载,得到的是byte数组,不会卡UI
//如果用DownloadString方法,在目标页面是UTF-8编码时会乱码,而且即使用Encoding类转换,也会丢失字符
}
private void webClient_DownloadDataCompleted(Object sender, DownloadDataCompletedEventArgs e)
{
//异步下载完成时触发
String html = Encoding.UTF8.GetString(e.Result);
//使用utf8编码转换成String
textBox1.Text = html;
//显示在 TextBox上
}