我尝试使用HtmlUnit(版本2.12)登录我的大学网站,但是我遇到了与网站编码有关的问题

代码:

    try {
        WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_9);
        WebClientOptions options = webClient.getOptions();
        options.setCssEnabled(false);
        options.setThrowExceptionOnScriptError(false);
        options.setThrowExceptionOnFailingStatusCode(false);
        options.setRedirectEnabled(true);
        options.setJavaScriptEnabled(true);
        HtmlPage page = (HtmlPage) webClient.getPage("http://www.oid.hacettepe.edu.tr/cgi-bin/menuindex.cgi");

    } catch (IOException ex) {
        Logger.getLogger(AnaSayfa.class.getName()).log(Level.SEVERE, null, ex);
    } catch (FailingHttpStatusCodeException ex) {
        Logger.getLogger(AnaSayfa.class.getName()).log(Level.SEVERE, null, ex);
    }


例外情况:

java.io.UnsupportedEncodingException: İSO-8859-9


我也尝试使用以下代码更改字符集:

WebRequest webRequest = new WebRequest(new URL("http://www.oid.hacettepe.edu.tr/cgi-bin/menuindex.cgi"));
webRequest.setCharset("utf-8");
HtmlPage page = (HtmlPage) webClient.getPage(webRequest);


但我的问题仍然存在:(请为解决方案提供任何建议

最佳答案

我以前从未遇到过此类问题。但是,您的代码对我(两个)都适用。这是我得到的输出:

<?xml version="1.0" encoding="ISO-8859-9"?>
<html>
  <head>
    <title>
      HU OIDB
    </title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9"/>
    <link rel="shortcut icon" href="http://www.oid.hacettepe.edu.tr/oidb.ico"/>
  </head>
...
</html>


顺便说一句,您是否注意到输出中有一个奇怪的İ字符?

java.io.UnsupportedEncodingException: İSO-8859-9


基于我可以运行该事实并且您不能假设它可能是某个Operative System默认值的事实。当然,它应该与编码有关。

您应该尝试更改JVM默认字符集。您可以在运行应用程序时使用JAVA_TOOL_OPTIONS或通过命令行来执行此操作:

java -Dfile.encoding=UTF-8 -jar YourApp.jar

10-07 19:26
查看更多