我正在编写一个web scraper,它从网站下载并处理html。下载网站内容后,所有内容都存储在数据库中。然后我从数据库中获取数据以显示在Winform应用程序上,而问题是winform应用程序无法显示从DB获取的内容。经过调查,我发现问题是字符编码(UTF8,Unicode,...),但我不知道如何解决它。 它适用于这样的代码:
byte[] data = Encoding.Default.GetBytes("check it out");
news.Title = Encoding.UTF8.GetString(data);
“检查出来”显示正确 然而,
byte[] data = Encoding.Default.GetBytes(title);
news.Title = Encoding.UTF8.GetString(data);
news.Title不显示在Winform Appication上,当然,“title”不为null或为空。
这就是我获得“头衔”的方式:
首先,获取html内容
StreamReader sr = new StreamReader(response.GetResponseStream())
rawHtml = sr.ReadToEnd();
byte[] data = Encoding.Default.GetBytes(rawHtml);
htmlCode= Encoding.UTF8.GetString(data) + "";
sr.Close();
然后,使用HtmlAgilityPack从htmlCode获取“title”节点。
HtmlNode titleNode = node.SelectSingleNode("//div[@class='title']");
title = titleNode != null ? titleNode.InnerText : string.Empty;
title = WebUtility.HtmlDecode(title);