diff --git a/hutool-core/src/main/java/cn/hutool/core/text/escape/XmlEscape.java b/hutool-core/src/main/java/cn/hutool/core/text/escape/XmlEscape.java index 461b1c90a..8aba9e2a7 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/escape/XmlEscape.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/escape/XmlEscape.java @@ -22,7 +22,7 @@ public class XmlEscape extends ReplacerChain { private static final long serialVersionUID = 1L; protected static final String[][] BASIC_ESCAPE = { // - {"'", "'"}, // " - single-quote +// {"'", "'"}, // " - single-quote {"\"", """}, // " - double-quote {"&", "&"}, // & - ampersand {"<", "<"}, // < - less-than diff --git a/hutool-core/src/main/java/cn/hutool/core/text/escape/XmlUnescape.java b/hutool-core/src/main/java/cn/hutool/core/text/escape/XmlUnescape.java index c7321eafa..80073a9c1 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/escape/XmlUnescape.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/escape/XmlUnescape.java @@ -13,9 +13,15 @@ public class XmlUnescape extends ReplacerChain { private static final long serialVersionUID = 1L; protected static final String[][] BASIC_UNESCAPE = InternalEscapeUtil.invert(XmlEscape.BASIC_ESCAPE); + // issue#1118 + protected static final String[][] OTHER_UNESCAPE = new String[][]{new String[]{"'", "'"}}; + /** + * 构造 + */ public XmlUnescape() { addChain(new LookupReplacer(BASIC_UNESCAPE)); addChain(new NumericEntityUnescaper()); + addChain(new LookupReplacer(OTHER_UNESCAPE)); } } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/EscapeUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/EscapeUtilTest.java index 7f5c7e597..b09d9a7d8 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/EscapeUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/EscapeUtilTest.java @@ -40,8 +40,16 @@ public class EscapeUtilTest { @Test public void escapeSingleQuotesTest(){ + // 单引号不做转义 String str = "'some text with single quotes'"; final String s = EscapeUtil.escapeHtml4(str); - Assert.assertEquals("'some text with single quotes'", s); + Assert.assertEquals("'some text with single quotes'", s); + } + + @Test + public void unescapeSingleQuotesTest(){ + String str = "'some text with single quotes'"; + final String s = EscapeUtil.unescapeHtml4(str); + Assert.assertEquals("'some text with single quotes'", s); } }