我尝试使用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);
但我的问题还在继续:(请为解决方案提供任何建议
答案 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