Looly 5 年 前
コミット
5b283651b0

+ 1 - 0
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)

+ 0 - 1
hutool-core/src/main/java/cn/hutool/core/text/escape/Html4Escape.java

@@ -18,7 +18,6 @@ public class Html4Escape extends ReplacerChain {
 			{ "&", "&" }, // & - ampersand
 			{ "<", "&lt;" }, // < - less-than
 			{ ">", "&gt;" }, // > - greater-than
-			{"\'", "&apos;"} // ' - quote
 	};
 
 	protected static final String[][] ISO8859_1_ESCAPE = { //

+ 3 - 0
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[]{"&apos;", "'"}};
 
 	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());
 	}
 }

+ 1 - 1
hutool-http/src/test/java/cn/hutool/http/test/HtmlUtilTest.java

@@ -119,7 +119,7 @@ public class HtmlUtilTest {
 		Assert.assertEquals("&lt;html&gt;&lt;body&gt;123&#039;123&#039;&lt;/body&gt;&lt;/html&gt;", escape);
 		String restoreEscaped = HtmlUtil.unescape(escape);
 		Assert.assertEquals(html, restoreEscaped);
-		Assert.assertEquals("\'", HtmlUtil.unescape("&apos;"));
+		Assert.assertEquals("'", HtmlUtil.unescape("&apos;"));
 	}
 	
 	@Test