Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Html特殊字符_Java_Html_Xpath_Utf 8_Htmlcleaner - Fatal编程技术网

Java-Html特殊字符

Java-Html特殊字符,java,html,xpath,utf-8,htmlcleaner,Java,Html,Xpath,Utf 8,Htmlcleaner,我想对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"),

我想对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();
    }
}
而不是我想要的输出:

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中更改下面的链接

如果不使用eclipse,可以为windows添加系统参数

-Dfile.encoding=utf-8
你也可以试试

System.setOut(new PrintStream(System.out, true, "utf-8"));

如果您指的是java控制台中的输出,那么可以更改控制台编码。控制台编码是默认的操作系统编码。您可以在eclipse中更改下面的链接

如果不使用eclipse,可以为windows添加系统参数

-Dfile.encoding=utf-8
你也可以试试

System.setOut(new PrintStream(System.out, true, "utf-8"));

我终于找到了答案

我用hexEdit打开了我的html文件,看到了一些奇怪的字节:“EFBFBD”


这是因为我右键单击/复制/粘贴了html代码。我不得不改变加载html文件的方式

我终于找到了答案

我用hexEdit打开了我的html文件,看到了一些奇怪的字节:“EFBFBD”


这是因为我右键单击/复制/粘贴了html代码。我不得不改变加载html文件的方式

您确定HTML文件是UTF-8吗?我的意思是,windows在保存文件时默认使用自己的编码。Eclipse本身默认使用这种编码,我怎么能确定呢?顺便说一下,meta标记表示字符集是UTF-8。如果您使用的是eclipse,并且HTML文件在项目中,您可以在explorer视图中选择该文件,然后按alt+Enter(或者右键单击并选择属性)。它将打开一个窗口,您可以在其中检查文本编码。beta标签是您声明将要使用的编码的方式,但它并不强制操作系统使用它。责任在你,我检查过了。使用UTF-8。这里有(至少)两个独立的问题:(a)程序发出的字节数,以及(b)在某些程序中查看数据时数据的外观(包括程序配置使用的编码和字体)。要分离这些问题,最好将输出发送到文件,然后使用十六进制编辑器检查文件中的字节。然后你就会知道失败是在(a)还是(b)中。你确定HTML文件是UTF-8吗?我的意思是,windows在保存文件时默认使用自己的编码。Eclipse本身默认使用这种编码,我怎么能确定呢?顺便说一下,meta标记表示字符集是UTF-8。如果您使用的是eclipse,并且HTML文件在项目中,您可以在explorer视图中选择该文件,然后按alt+Enter(或者右键单击并选择属性)。它将打开一个窗口,您可以在其中检查文本编码。beta标签是您声明将要使用的编码的方式,但它并不强制操作系统使用它。责任在你,我检查过了。使用UTF-8。这里有(至少)两个独立的问题:(a)程序发出的字节数,以及(b)在某些程序中查看数据时数据的外观(包括程序配置使用的编码和字体)。要分离这些问题,最好将输出发送到文件,然后使用十六进制编辑器检查文件中的字节。然后你就会知道失败是在(a)还是(b)中。如果我做你的第一个解,我得到这个:d�cembre 2010-d�2010年10月)。如果我执行system.setout,我会得到以下结果:dë½cembre 2010-dë½cembre 2010)另外,我试图将输出写入一个文件,但我遇到了相同的问题:(我的建议是打印到java控制台。如果你想提交我的建议,我的建议对你不起作用。在你的问题中,这个新的文件输入流(“html_doyoubuzz.html”),“UTF-8”)应该足够了。如果我做你的第一个解,我得到这个:d�cembre 2010-d�2010年10月)。如果我执行system.setout,我会得到以下结果:dë½cembre 2010-dë½cembre 2010)另外,我试图将输出写入一个文件,但我遇到了同样的问题:(我的建议是打印到java控制台。如果你想提交我的建议,我的建议对你不起作用。在你的问题中,这个新的FileInputStream(“html_doyoubuzz.html”),“UTF-8”)应该足够了。