HtmlUnit - HTMLParser(带字符的页面)

时间:2018-03-07 16:32:22

标签: htmlunit stringescapeutils

我有一个资源(一个静态的html页面),我想用来测试。但是,当我得到静态页面时,它会附带一些字符编码。我尝试使用StringEscapeUtils类,但它不起作用。 我的功能:

  private HtmlPage getStaticPage() throws IOException, ClassNotFoundException {
    final Reader reader = new InputStreamReader(this.getClass().getResourceAsStream("/" + "testPage" + ".html"), "UTF-8");
    final StringWebResponse response = new StringWebResponse(StringEscapeUtils.unescapeHtml4(IOUtils.toString(reader)), StandardCharsets.UTF_8, new URL(URL_PAGE));
    return HTMLParser.parseHtml(response, WebClientFactory.getInstance().getCurrentWindow());
}
  

import org.apache.commons.lang3.StringEscapeUtils;

1 个答案:

答案 0 :(得分:0)

final Reader reader = new InputStreamReader(this.getClass().getResourceAsStream("/" + "testPage" + ".html"), "UTF-8");

对于读者使用文件的编码(从你的评论我猜这是你的情况下的Windows-1252)。 然后将文件读入字符串(例如使用commons.io)。

然后你可以像这样处理它

final StringWebResponse tmpResponse = new StringWebResponse(anHtmlCode,
    new URL("http://www.wetator.org/test.html"));
final WebClient tmpWebClient = new WebClient(aBrowserVersion);
try {
  final HtmlPage tmpPage = HTMLParser.parseHtml(tmpResponse, tmpWebClient.getCurrentWindow());
  return tmpPage;
} finally {
  tmpWebClient.close();
}

如果您仍然遇到问题,请从您的页面中制作一个简单的样本,以便显示您的问题并将其与您的代码一起上传到此处。