2011-01-03 18 views
1

HTML文書からいくつかの情報を抽出するサンプルプログラムがあります。あなたはjSOupで働いてきた場合はjSoupがHTMLエンティティを正しくアンエスケープしていません

import org.jsoup.*; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 

public class TestSoup { 

    public static void main(String[] args) { 

     String html = "<p>An <a href='http://example.com/'><b>exa&nbsp;mple</b></a> link.</p>"; 
     Document doc = Jsoup.parse(html); 
     Element link = doc.select("a").first(); 

     String linkText = link.text(); // "example"" 
     System.out.println(linkText); 

    } 

} 

あなたはこのの出力はexa mpleなければならないことを知っているだろうが、出力はexaámpleです。なぜjSoupがHTMLエンティティを適切に解読しないのですか、それとも単に間違っているのですか?

すべての私のHTMLエンティティが誤ってだけでなく、&nbsp;

答えて

5

正しく動作jSoupエスケープを取得、あなたは出力エンコーディングに問題があります。

Windowsでは、コンソールで使用されている文字エンコーディング(あなたの場合はCP437)は、システムのエンコーディング(あなたの場合はWindows-1252)と同じではありません。 System.out.println()はあなたの文字列をシステムのデフォルトのエンコーディングで出力します。したがって、コンソールに間違って表示されます。

のJava 1.6では、代わりにSystem.console()を試すことができます。

System.console().writer().println(linkText); 
関連する問題