diff --git a/CHANGELOG.md b/CHANGELOG.md index 371f793b9..3899a6d9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ * 【http 】 SoapClient增加addSOAPHeader方法 * 【http 】 完善StrUtil的注释(pr#186@Gitee) * 【aop 】 去除调试日志(issue#1116@Github) +* 【core 】 增加'反转义(pr#1121@Github) ### Bug修复 * 【crypto 】 修复SM2验签后无法解密问题(issue#I1W0VP@Gitee) diff --git a/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java b/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java index 74312c2f7..6b141626f 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java @@ -18,7 +18,6 @@ public class Html4Escape extends ReplacerChain { { "&", "&" }, // & - ampersand { "<", "<" }, // < - less-than { ">", ">" }, // > - greater-than - {"\'", "'"} // ' - quote }; protected static final String[][] ISO8859_1_ESCAPE = { // diff --git a/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Unescape.java b/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Unescape.java index b6d4de9ef..163860349 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Unescape.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Unescape.java @@ -15,11 +15,14 @@ public class Html4Unescape extends ReplacerChain { protected static final String[][] BASIC_UNESCAPE = InternalEscapeUtil.invert(Html4Escape.BASIC_ESCAPE); protected static final String[][] ISO8859_1_UNESCAPE = InternalEscapeUtil.invert(Html4Escape.ISO8859_1_ESCAPE); protected static final String[][] HTML40_EXTENDED_UNESCAPE = InternalEscapeUtil.invert(Html4Escape.HTML40_EXTENDED_ESCAPE); + // issue#1118 + protected static final String[][] OTHER_UNESCAPE = new String[][]{new String[]{"'", "'"}}; public Html4Unescape() { addChain(new LookupReplacer(BASIC_UNESCAPE)); addChain(new LookupReplacer(ISO8859_1_UNESCAPE)); addChain(new LookupReplacer(HTML40_EXTENDED_UNESCAPE)); + addChain(new LookupReplacer(OTHER_UNESCAPE)); addChain(new NumericEntityUnescaper()); } } diff --git a/hutool-http/src/test/java/cn/hutool/http/test/HtmlUtilTest.java b/hutool-http/src/test/java/cn/hutool/http/test/HtmlUtilTest.java index d5a87bf0b..66eb9421e 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/HtmlUtilTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/test/HtmlUtilTest.java @@ -119,7 +119,7 @@ public class HtmlUtilTest { Assert.assertEquals("<html><body>123'123'</body></html>", escape); String restoreEscaped = HtmlUtil.unescape(escape); Assert.assertEquals(html, restoreEscaped); - Assert.assertEquals("\'", HtmlUtil.unescape("'")); + Assert.assertEquals("'", HtmlUtil.unescape("'")); } @Test