2

我遇到了一些奇怪的事情,我想听听你的意见。

有一个网页包含一个在and属性span中带有一些希腊文本的元素。InnerTextInnerHtml

页面的编码是Greek(Windows)

我的if声明是:

if (mySpan != null && mySpan.InnerText.Contains(greekText))

此行 100% 有效,但我之前的非工作代码是:

if (mySpan != null && browser.DocumentText.Contains(greekText))

该行不起作用,当我使用调试器单击预览时,我注意到希腊文本不可读(奇怪的符号而不是希腊字符)。但是,应用程序成功读取了所有其他包含希腊文本的元素,也就是说,我可以将它们的属性保存在变量中并使用它们。有什么解释为什么DocumentText失败和InnerText成功?

4

1 回答 1

2

查看WebBrowser.DocumentText它的源代码会显示它默认使用 UTF8 编码:

public string DocumentText
{
  get
  {
    Stream documentStream = this.DocumentStream;
    if (documentStream == null)
      return "";
    StreamReader streamReader = new StreamReader(documentStream);
    documentStream.Position = 0L;
    return streamReader.ReadToEnd();
  }

也就是说,使用StreamReader不指定编码的 a 将假定为 UTF8 编码。

请参阅此链接以解决此问题

我只能假设使用browser.Document.GetElementById(mySpanId)尊重页面的规定编码,这就是您在使用此调用时正确看到它的原因。

于 2012-04-25T07:44:31.120 回答