【发布时间】:2021-11-01 15:20:41
【问题描述】:
我在我的程序中收到这样的文本
Ký Sinh Trùng  - (2019)
错的应该如下
Ký Sinh Trùng - (2019)
我使用了以下代码,但没有任何反应
byte[] bytes = Encoding.Default.GetBytes(nodes.InnerText);
var myString = Encoding.UTF8.GetString(bytes);
我该如何解决这个问题?
更新:完整代码:
HtmlWeb Webget = new HtmlWeb();
var docx = await Webget.LoadFromWebAsync(@"https://isubtitles.org/search?kwd=parasite");
var items = docx.DocumentNode.SelectNodes("//div[@class='movie-list-info']");
foreach (var node in items)
{
var name = node?.SelectSingleNode(".//div/div[2]/h3/a");
var xxxx = name?.InnerText;
byte[] bytes = Encoding.UTF8.GetBytes(xxxx);
var myString = Encoding.UTF8.GetString(bytes);
Debug.WriteLine(myString);
return;
}
【问题讨论】:
-
这些字符似乎是 HTML 编码的。我会仔细检查源是否有这些 HTML 编码字符,以确定 HtmlAgilityPack 是否应该受到责备。
-
完全没有问题。
ý是ý的 HTML 编码形式,而不是 UTF8。浏览器会很好地显示它。此页面是 UTF8,这就是为什么它可以显示Ký Sinh Trùng或Αυτό Εδώ而无需显式... HTML 编码 -
UTF8 指定文本如何转换为字节。它没有指定任何类型的转义序列。在这方面它与 ASCII/Latin1 没有什么不同。几乎所有网站都使用 UTF8。
标签: c# html-agility-pack