在带有重音字母的语言中转义 HTML

Posted

技术标签:

【中文标题】在带有重音字母的语言中转义 HTML【英文标题】:Escape HTML in Languages with Accented Letters 【发布时间】:2017-04-27 14:29:05 【问题描述】:

如果我不想转义重音字符,建议使用 Java 中的哪种 html 转义方法,例如,在字符串“Matías”中,重音 í 应该保持未转义。

StringEscapeUtils.escapeHtml() 和 Springs 的 HtmlUtils.htmlEscape() 都会转义这些字母。

【问题讨论】:

【参考方案1】:

使用 Spring 的 htmlEscape(String input, String encoding),您可以传递像 "UTF-8" 这样的编码。根据 JavaDoc,如果字符采用给定的编码(或者至少我是这样理解的),则字符不会被转义。

【讨论】:

【参考方案2】:

Guava 的 HtmlEscapers.htmlEscaper().escape(inputString) 在没有指定编码的情况下成功了

【讨论】:

【参考方案3】:

使用 Apache commons-text:

   public static final CharSequenceTranslator ESCAPE_CUSTOM =
         new AggregateTranslator(
                 new LookupTranslator(EntityArrays.BASIC_ESCAPE),
                 new LookupTranslator(EntityArrays.HTML40_EXTENDED_ESCAPE)
         );
   ESCAPE_CUSTOM.translate(input);

【讨论】:

以上是关于在带有重音字母的语言中转义 HTML的主要内容,如果未能解决你的问题,请参考以下文章

如何对字符串进行 HTML 编码/转义?有内置的吗?

html十进制转义字符和字母转义字符怎么做转义

在带有刀片模板的表单中使用 laravelcollective/html 时防止转义单引号

HTML-实体(转义字符)

java中的转义字符的作用是啥?

json_encode() 转义 / 带有 \ [重复]