HtmlUnit编码异常

时间:2013-09-12 15:03:33

标签: java htmlunit

我尝试使用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);

但我的问题还在继续:(请为解决方案提供任何建议

1 个答案:

答案 0 :(得分:0)

我以前从未遇到过这类问题。但是,您的代码对我来说都很好(两者都有)。这是我得到的输出:

<?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

基于我可以运行它的事实,你不能认为它可能是一些操作系统默认值。当然,它应该与编码有关。

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

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