在带有重音字母的语言中转义 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的主要内容,如果未能解决你的问题,请参考以下文章