如何在Java中使用数字字符引用来转义字符串

时间:2014-10-20 17:19:44

标签: character-encoding escaping html-entities character-reference

您好,感谢您阅读我的帖子。

Apache Commons StringEscapeUtils.escapeHtml3()和StringEscapeUtils.escapeHtml4()函数特别允许将字符串中具有锐角(如é,à...)的字符转换为 具有格式和名称的字符实体引用;其中name是区分大小写的字母数字字符串。

如何获取带有数字字符引用的给定字符串的转义字符串(& #nnnn;或& #xhhhh;其中nnnn是十进制形式的代码点,hhhh是十六进制形式的代码点)?

我实际上需要为XML文档转义字符串,这些文档不知道这样的实体和& eacute;,& agrave;等

最好的问候。

2 个答案:

答案 0 :(得分:1)

为了解决这个问题,我编写了一个方法,该方法将字符串作为参数,并在此字符串中替换字符实体引用(如é)及其对应的数字字符引用(é in这种情况)。

我使用了这个W3C参考文献列表:http://www.sagehill.net/livedtd/xhtml1-transitional/xhtml-lat1.ent.html

Nota:能够将另一个参数传递给StringEscapeUtils.escapeHtml4()方法以告诉它我们是否希望输出字符串中的字符实体引用或数字字符引用会很棒......

答案 1 :(得分:0)

创建CharacterTranslator

CharacterTranslator XML_ESCAPE = StringEscapeUtils.ESCAPE_XML11.with(
    NumericEntityEscaper.between(0x7f, Integer.MAX_VALUE) );

并使用它:

XML_ESCAPE.translate(…)