1

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)

問題を解決するアイデアはありますか?

ありがとう。

4

2 に答える 2

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"));
于 2013-06-10T08:05:00.763 に答える
0

私はついに答えを見つけました。

hexEdit で html ファイルを開くと、「EF BF BD」という奇妙なバイトが表示されました。

これは、html コードを右クリック/コピー/貼り付けしたためです。HTMLファイルのロード方法を変更する必要がありました。

于 2013-06-11T14:19:56.310 に答える