javascript - HtmlUnit 获取编码错误的字符串

标签 javascript java htmlunit

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

当通过 executeJavaScript() 运行 document.querySelector() 以从 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 编码的文件。

关于javascript - HtmlUnit 获取编码错误的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53765583/

相关文章:

javascript - 单击 <a href ="#"> 时隐藏 URL 中的 #

java - 如何使用 Maven 签署多个 JNLP 应用程序

screenshot - 如何使用 HTML-Unit 截取屏幕截图?

java - 使用 WebDriver/HtmlUnit 获取所有 HTTP 请求

javascript - 双像 slider 组合

javascript - Rails - 从 javascript 调用 Controller

java - 如何解决 javax.mail.AuthenticationFailedException?

java - 运行 mvn liquibase :diff to update database 时发现多个目录匹配架构

javascript - 有没有办法在开始执行 javascript 之前转换由 HtmlUnit 加载的页面?

javascript - jQuery addClass 和 removeClass 事件对悬停功能有奇怪的影响