我想在HTML文件上发出一些XPath请求。这是我的代码:
public static void main(String args[]) {
try{
/** We load the HTML file we want to parse */
BufferedReader br = new BufferedReader(new InputStreamReader (new FileInputStream("html_doyoubuzz.html"),"UTF-8"));
/** we clean HTML file */
TagNode tagNode = new HtmlCleaner().clean(br);
Document doc2 = new DomSerializer( new CleanerProperties() ).createDOM(tagNode);
/******************************
* *
* XPath Requests *
* *
******************************/
XPath xpath = XPathFactory.newInstance().newXPath();
Object dates_experience = xpath.evaluate("/html/body/div[3]/div/div/div[2]/div/div/div[2]/div[4]/div/div[3]/h4/span[2]", doc2, XPathConstants.NODESET);
NodeList nodes = (NodeList) dates_experience;
String s;
for (int i = 0; i < nodes.getLength(); i++) {
s = org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4(nodes.item(i).getTextContent());
System.out.println(s);
}
}
catch (Exception e){//Catch exception if any
e.printStackTrace();
}
}
我的HTML文件以UTF-8编码(如元标记中所述)。我的问题是输出。我明白了:
d?cembre 2010 - d?cembre 2010)
f?vrier 2010 - juin 2010)
juillet 2009 - septembre 2009)
juin 2009 - juin 2009)
juillet 2008 - ao?t 2008)
而不是这个,这是我想要的输出:
décembre 2010 - décembre 2010)
février 2010 - juin 2010)
juillet 2009 - septembre 2009)
juin 2009 - juin 2009)
juillet 2008 - août 2008)
你有什么想法解决这个问题吗?
感谢。
答案 0 :(得分:1)
如果您的意思是在java控制台中输出,则可以更改控制台编码。控制台编码是默认操作系统编码。你可以在链接下面改变eclipse。
http://decoding.wordpress.com/2010/03/18/eclipse-how-to-change-the-console-output-encoding/
如果你不使用eclipse,你可以为windows添加系统参数
-Dfile.encoding=utf-8
你也可以试试
System.setOut(new PrintStream(System.out, true, "utf-8"));
答案 1 :(得分:0)
我终于找到了答案。
我用hexEdit打开了我的html文件,我看到了一些奇怪的字节:“EF BF BD”。
这是因为我对html代码进行了右击/复制/粘贴。我不得不改变加载html文件的方式。