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

使用Java标准库将HTML字符转换回文本,java,html,html-entities,Java,Html,Html Entities,我想使用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

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

    }
}

我不知道用标准库做这件事的任何方法。但是我知道并使用这个类来处理html实体

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


我不知道用标准库做这件事的任何方法。但是我知道并使用这个类来处理html实体

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


只处理
应用程序/x-www-form-urlencoded
MIME格式(例如,“%20”表示空格),而不处理。我认为Java平台上没有任何东西可以做到这一点。您可以编写自己的实用程序类来进行转换,例如。

只处理
应用程序/x-www-form-urlencoded
MIME格式(例如“%20”表示空间),而不处理。我认为Java平台上没有任何东西可以做到这一点。您可以编写自己的实用程序类来进行转换,例如。

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


一段时间后,我在库中找到了一个类。

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


经过一段时间后,我在库中找到了一个类。

我认为Apache Commons Lang库的
StringEscapeUtils.unescapeHtml3()
unescapeHtml4()
方法就是您要寻找的。请参阅。

我认为Apache Commons Lang库的
StringEscapeUtils.unescapeThl3()
unescapeThl4()
方法就是您要寻找的。请参阅。

这里,您只需在应用程序的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的链接:

在这里,您只需在应用程序的libJSOUP中添加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的链接:

正如@jem所建议的,可以使用jsoup

在JSOUP1.8.3中,可以使用Parser.unescapeEntities方法来保留原始html

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

在以前的一些版本中,似乎没有这种方法。

正如@jem所建议的,可以使用jsoup

在JSOUP1.8.3中,可以使用Parser.unescapeEntities方法来保留原始html

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

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

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

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

它正在工作。

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

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

它正在工作。

或者您可以使用unescapethml4:

    String miCadena="GUÍA TELEFÓNICA";
    System.out.println(StringEscapeUtils.unescapeHtml4(miCadena));
此代码打印行:
GUÍA TELEFÓNICA

或者您可以使用unescapeHtml4:

    String miCadena="GUÍA TELEFÓNICA";
    System.out.println(StringEscapeUtils.unescapeHtml4(miCadena));
此代码打印行:
GUÍA TELEFÓNICA

最新的url:不是为了打败一匹死马,但OP要求的是如何在HTML实体和“纯”文本(对我来说是ASCII,但是YMMV)之间进行翻译。上面的Jakarta库有unescapeHTML(和escapeHTML),这就实现了这一点。URLDecoder仍然适用于百分比编码URL字符串(如GET参数)。在Android的情况下,这将如何支持?最好给出主URL,可以删除特定版本;)=>StringEscapeUtils不推荐使用。下面的回答现在是最正确的。最新的url:不是为了打败一匹死马,但OP要求的是如何在HTML实体和“纯”文本(对我来说是ASCII,但是是YMMV)之间进行翻译。上面的Jakarta库有unescapeHTML(和escapeHTML),这就实现了这一点。URLDecoder仍然适用于百分比编码URL字符串(如GET参数)。在Android的情况下,这将如何支持?最好给出主URL,可以删除特定版本;)=>StringEscapeUtils不推荐使用。下面的回答现在是最正确的。非常好的库,现在很容易做像非常好的库这样的事情,现在很容易做像这样的事情应该是公认的答案。没有其他库比惊人的Jsoup.Awesome更快、更容易导入。这就是答案。这应该是公认的答案。没有其他库比惊人的Jsoup.Awesome更快、更容易导入。这就是答案。我更喜欢这个解决方案。如果可能,我建议使用apachelibs。(我的意见)我更喜欢这个解决方案。如果可能,我建议使用apachelibs。(我的意见)