【发布时间】:2019-11-03 10:43:13
【问题描述】:
我从一个 html 页面获取文本,但是当我在屏幕上打印时,像这样的重音字母和符号:> 或这个:«»,用问号表示。
示例代码:
static void Main(string[] args)
{
var html = @"<body>
<p>This is the text with «quotation marks» and accented word wè</p>
</body>";
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var htmlNodes = htmlDoc.DocumentNode.SelectSingleNode("//body");
Console.WriteLine(Regex.Replace(WebUtility.HtmlDecode(htmlNodes.InnerText), @"\r\n?|\n|[ ]{2,}", ""));
Console.ReadLine();
}
我已经使用 WebUtility.HtmlDecode(string) 来解码字符串并使用 HtmlAgilityPack 来管理 Html
在我上面写的代码示例中,返回的字符串对于真实字符是正确的:
-- 这是带有«引号»和重音单词 wè 的文本
但在我的例子中,在 html 页面中获取代码(以与上图相同的方式)重音字母和符号(如引号)用问号打印它们,如下所示:
-- 这是带 ? 引号的文本?和重音词 w?
当真实的字母带有问号时,我怎样才能保留它们?
提前致谢。
【问题讨论】:
-
欢迎来到 Stack Overflow。如果您能提供minimal reproducible example,这将非常有帮助 - 目前我们不知道您是如何获取文本的,或者您是如何在屏幕上打印的。
-
我把帖子更新的更清楚了
-
您正在向控制台写入数据——您的控制台甚至支持这些字符吗?如果您只写
Console.WriteLine(html);,that 会显示什么?在运行代码之前,您可能希望在控制台中使用chcp 65001。 -
我可以举一个小例子来说明如何在控制台中使用 chcp 65001 吗?
-
在控制台中,键入“chcp 65001”(不带引号)并按回车键。就这么简单。