1

HtmlUnit(バージョン 2.12) で大学の Web サイトにログインしようとしましたが、Web サイトのエンコーディングに関連する問題があります。

コード:

    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);

しかし、私の問題は続きます:(解決策について何かアドバイスをください

4

1 に答える 1

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
于 2013-09-12T20:38:52.760 に答える