2009-03-01 45 views
36

我想使用Java標準庫將一些HTML字符轉換回文本。我想知道是否有任何圖書館能達到我的目的?使用Java標準庫將HTML字符轉換爲文本

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 

    // "Happy & Sad" in HTML form. 
    String s = "Happy & Sad"; 
    System.out.println(s); 

    try { 
     // Change to "Happy & Sad". DOESN'T WORK! 
     s = java.net.URLDecoder.decode(s, "UTF-8"); 
     System.out.println(s); 
    } catch (UnsupportedEncodingException ex) { 

    } 
} 

回答

53

我覺得雅加達Commons Lang圖書館的StringEscapeUtils.escapeHtml()和unescapeHtml()方法就是你要找的。見http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html

+1

最新的網址:http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/StringEscapeUtils.html – Reu 2011-11-23 16:57:39

+0

不要打死馬,但OP要求的是如何在HTML實體之間進行翻譯和「純文本」(這是我的ASCII碼,但YMMV)。上面的雅加達lib有unescapeHTML(和escapeHTML),它可以做到這一點。 URLDecoder仍然適用於百分比編碼URL字符串(如GET參數)。 – jjohn 2012-06-14 18:20:25

+0

在Android的情況下,如何支持同樣的想法? – CoDe 2013-09-13 19:49:28

7

java.net.URLDecoder涉及的application/x-www-form-urlencoded MIME格式(例如 「%20」 表示的空間),而不是與HTML character entities。我不認爲Java平臺上有任何東西。您可以編寫自己的實用程序類來執行轉換,例如this one

5

URL解碼器應該只用於解碼由「application/x-www-form-urlencoded」mime類型的html表單生成的url的字符串。這不支持html字符。

經過search後,我在HTML Parser庫中找到Translate類。

+0

非常好的圖書館,現在很容易做一些像 Miguel 2012-08-17 14:58:45

24

在這裏,你必須在你的應用程序中添加jar文件到lib jsoup中,然後使用這段代碼。

import org.jsoup.Jsoup; 

public class Encoder { 
    public static void main(String args[]) { 
     String s = Jsoup.parse("<Français>").text(); 
     System.out.print(s); 
    } 
} 

鏈接下載jsoup:http://jsoup.org/download

0

由於@jem建議,可以使用jsoup。

使用jSoup 1.8.3它可以使用方法Parser.unescapeEntities保留原始的HTML。

import org.jsoup.parser.Parser; 
... 
String html = Parser.unescapeEntities(original_html, false); 

似乎在以前的某些版本中,此方法不存在。

1

您可以使用類org.apache.commons.lang.StringEscapeUtils:

String s = StringEscapeUtils.unescapeHtml("Happy & Sad") 

這是工作。