使用JSoup清理时是否可以将编码字符保留为编码?例如,目前<
的HTML实体,数字和符号已编码为<
。我试过更改EscapeMode
,甚至玩了一些charSets,但没有运气:
Document.OutputSettings outputSettings = new Document.OutputSettings();
outputSettings.escapeMode(Entities.EscapeMode.extended);
assert "< < <" == Jsoup.clean("< < <", "http:example.com",
Whitelist.basic(), outputSettings);
基于this bug帖子,我还尝试创建自己的清理器并在那里运行内容,但这只是让它们解码:
Cleaner cleaner = new Cleaner(Whitelist.basic());
Document doc = Jsoup.parse("< < <");
assert "< < <" == cleaner.clean(doc).text();
我想要的是输出结果(假设它已列入白名单):
< < <
我意识到这个问题,但是有可能,或者JSoup在这种情况下不是正确的工具吗?
作为一种解决方法,我知道在将它发送到JSoup之前我可以用一些魔术值替换它们,然后再对它们进行重新编码,但这很麻烦,不安全,而且看起来很糟糕。