使用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);
看来在以前的版本中这个方法不存在。