Java - Html特殊字符



我想对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编码的(写在meta标签中)。我的问题是输出。我得到这个:

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)

你有什么办法解决这个问题吗?

谢谢。

如果您的意思是在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"));

我终于找到答案了

我用hexEdit打开我的html文件,我看到一些奇怪的字节:"EF BF BD"。

这是因为我右键点击/复制/粘贴html代码。我必须改变加载html文件的方式。

相关内容

  • 没有找到相关文章

最新更新