42

我想使用 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) {

    }
}
4

8 回答 8

59

我认为 Apache Commons Lang 库StringEscapeUtils.unescapeHtml3()unescapeHtml4()方法是您正在寻找的。请参阅https://commons.apache.org/proper/commons-text/javadocs/api-release/org/apache/commons/text/StringEscapeUtils.html

于 2009-03-01T11:46:21.500 回答
28

在这里,您只需在应用程序的 lib jsoup 中添加 jar 文件,然后使用此代码。

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

于 2012-09-27T04:52:43.003 回答
7

java.net.URLDecoder仅处理application/x-www-form-urlencodedMIME 格式(例如“%20”表示空格),而不处理HTML 字符实体。我认为Java平台上没有任何东西。您可以编写自己的实用程序类来进行转换,例如这个

于 2009-03-01T11:29:17.080 回答
5

URL 解码器只能用于解码来自“application/x-www-form-urlencoded”mime 类型的 html 表单生成的 url 中的字符串。这不支持 html 字符。

经过搜索,我在HTML Parser库中找到了一个Translate类。

于 2009-03-01T11:37:12.787 回答
4

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

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

这是工作。

于 2017-12-12T11:37:16.593 回答
2

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

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

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

于 2009-03-01T11:15:37.987 回答
2

或者你可以使用 unescapeHtml4:

    String miCadena="GUÍA TELEFÓNICA";
    System.out.println(StringEscapeUtils.unescapeHtml4(miCadena));

此代码打印行:GUÍA TELEFÓNICA

于 2018-04-07T00:02:10.553 回答
1

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

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

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

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

于 2015-09-25T14:27:50.493 回答