在现有HTML字符串中转换元音变种(Java函数)

时间:2017-07-28 04:35:01

标签: java html encode

我需要一个java函数来在现有的html-String中转换umlaute。所以例如我有

<html>
<body>
äü
</body> 
</html>

现在该函数应将所有类型的umaute转换为其转义形式。所以它应该保持html代码完整,但只需替换 - &gt; ä和ü - &gt; ü在上面的例子中导致

<html>
<body>
&auml;&uuml;
</body>
</html>

我很清楚,escapeHtml4中有大量的转义功能 。问题是所有html都被转换,因此html代码也被转义。我正在寻找一个函数,它只识别html代码中的文本部分,然后对它们进行编码。

此外,在这种情况下,设置UTF-8编码不适合我。

1 个答案:

答案 0 :(得分:0)

您必须首先解析html文件,然后仅在相关部分上应用转义。

例如,Jsoup是一个html解析器。您可以迭代html元素,然后操纵它们的内容。

更新:这对Jsoup来说非常简单:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class StackOverflow {

    static final String HTML = "<html><body>äü</body></html>";

    public static void main(String... args) {
        Document doc = Jsoup.parse(HTML);
        doc.outputSettings().escapeMode(Entities.EscapeMode.base);
        doc.outputSettings().charset("ASCII");
        System.out.println(doc.toString());
    }
}

产生

<html>
 <head></head>
 <body>
  &auml;&uuml;
 </body>
</html>

通过在输出设置中将字符集设置为ASCII,您告诉Jsoup它不应输出UTF-8字符。结果,Jsoup逃脱了他们。