使用Java标准库将HTML字符转换回文本

我想用Java Standard Library将一些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) { } } 

我认为雅加达共享Lang图书馆的StringEscapeUtils.escapeHtml()和unescapeHtml()方法是你正在寻找的。 请参阅http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html

在这里你只需要在你的应用程序中添加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

java.net.URLDecoder只处理application/x-www-form-urlencoded MIME格式(例如“%20”代表空格),而不是HTML字符实体 。 我不认为Java平台上有任何东西。 你可以编写自己的工具类来完成转换,就像这样 。

URL解码器只能用于从“application / x-www-form-urlencoded”MIMEtypes的html表单生成的url中解码string。 这不支持html字符。

在search之后,我在HTML Parser库中find了一个Translate类。

我不知道有什么办法使用标准库来做到这一点。 但我知道并使用这个类处理html实体。

“HTMLEntities是一个开放源代码的Java类,它包含一系列静态方法(htmlentities,unhtmlentities …),用于将特殊字符和扩展字符转换为HTML实体,反之亦然。”

http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=htmlentities

正如@jembuild议的那样,可以使用jsoup。

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

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

看来在以前的版本中这个方法不存在。