我需要一个java函数来在现有的html-String中转换umlaute。所以例如我有
<html>
<body>
äü
</body>
</html>
现在该函数应将所有类型的umaute转换为其转义形式。所以它应该保持html代码完整,但只需替换 - &gt; ä和ü - &gt; ü在上面的例子中导致
<html>
<body>
äü
</body>
</html>
我很清楚,escapeHtml4中有大量的转义功能 。问题是所有html都被转换,因此html代码也被转义。我正在寻找一个函数,它只识别html代码中的文本部分,然后对它们进行编码。
此外,在这种情况下,设置UTF-8编码不适合我。
答案 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>
äü
</body>
</html>
通过在输出设置中将字符集设置为ASCII,您告诉Jsoup它不应输出UTF-8字符。结果,Jsoup逃脱了他们。