diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/Html4Escape.java b/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/Html4Escape.java index 5532c42cb..672457c6e 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/Html4Escape.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/Html4Escape.java @@ -17,6 +17,7 @@ package org.dromara.hutool.core.text.escape; import org.dromara.hutool.core.text.replacer.LookupReplacer; +import org.dromara.hutool.core.text.replacer.ReplacerChain; /** * HTML4的ESCAPE @@ -25,9 +26,21 @@ import org.dromara.hutool.core.text.replacer.LookupReplacer; * @author Looly * */ -public class Html4Escape extends XmlEscape { +public class Html4Escape extends ReplacerChain { private static final long serialVersionUID = 1L; + /** + * HTML转义字符
+ * HTML转义相比XML,并不转义单引号
+ * 见:https://stackoverflow.com/questions/1091945/what-characters-do-i-need-to-escape-in-xml-documents + */ + protected static final String[][] BASIC_ESCAPE = { // + {"\"", """}, // " - double-quote + {"&", "&"}, // & - ampersand + {"<", "<"}, // < - less-than + {">", ">"}, // > - greater-than + }; + /** * ISO8859_1 转义字符 */ @@ -337,6 +350,7 @@ public class Html4Escape extends XmlEscape { */ public Html4Escape() { super(); + addChain(new LookupReplacer(BASIC_ESCAPE)); addChain(new LookupReplacer(ISO8859_1_ESCAPE)); addChain(new LookupReplacer(HTML40_EXTENDED_ESCAPE)); } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/XmlEscape.java b/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/XmlEscape.java index 097404188..5a7750877 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/XmlEscape.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/text/escape/XmlEscape.java @@ -40,7 +40,7 @@ public class XmlEscape extends ReplacerChain { * XML转义字符 */ protected static final String[][] BASIC_ESCAPE = { // -// {"'", "'"}, // " - single-quote + {"'", "'"}, // " - single-quote {"\"", """}, // " - double-quote {"&", "&"}, // & - ampersand {"<", "<"}, // < - less-than