HtmlUnit 获取编码错误的字符串

HtmlUnit getting string with wrong encoding

我正在使用 HtmlUnit 在 HTML 文件中执行一些 Javascript。关键是 Javascript 可以是任何东西,例如 document.querySelector().

当运行一个document.querySelector()通过executeJavaScript()从HTML获取字符串数据时,是在乱编码。

例如:Interés 变为 Interés

有没有巧妙的方法将其转换为配置 HtmlUnit 对象?

一些代码:

webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setAppletEnabled(false);
webClient.getOptions().setDownloadImages(false);

htmlPage = this.webClient.getPage("file:/" + htmlFile.getAbsolutePath());

ScriptResult scriptResult = htmlPage.executeJavaScript(someJavascriptFunction);

//This scriptResult.getJavaScriptResult() already has encoding issues

我试过设置webClient.addRequestHeader("Accept-Encoding", "utf-8");但是没用。

这里的问题是文件源。从磁盘读取普通文件时,有关于所用编码的信息。 HtmlUnit 处理这种情况的方式与 Web 服务器不提供任何编码信息作为响应的一部分的方式相同。在这些情况下,HtmlUnit(就像真正的浏览器一样)使用 StandardCharsets.ISO_8859_1 编码读取文件字节。

作为简单的解决方案,将您的文件 ISO_8859_1 编码。