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 编码。
我正在使用 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 编码。