diff --git a/CHANGELOG.md b/CHANGELOG.md
index 024eed912..1608dfbca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,9 @@
* 【core 】 CharUtil and StrUtil增加@(pr#1106@Github)
* 【extra 】 优化EMOJ查询逻辑(pr#1112@Github)
* 【extra 】 优化CollUtil交并集结果集合设置初始化大小,避免扩容成本(pr#1110@Github)
+* 【core 】 优化PageUtil彩虹算法(issue#1110@Github)
+* 【core 】 IoUtil增加readUtf8方法
+* 【core 】 优化全局邮箱账户初始化逻辑(pr#1114@Github)
### Bug修复
* 【crypto 】 修复SM2验签后无法解密问题(issue#I1W0VP@Gitee)
diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
index 88d94c4c5..5b8df51ed 100644
--- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
@@ -214,9 +214,14 @@ public class DateUtil extends CalendarUtil {
/**
* 获得指定日期是所在年份的第几周
+ * 此方法返回值与一周的第一天有关,比如:
+ * 2016年1月3日为周日,如果一周的第一天为周日,那这天是第二周(返回2)
+ * 如果一周的第一天为周一,那这天是第一周(返回1)
+ * 跨年的那个星期得到的结果总是1
*
* @param date 日期
* @return 周
+ * @see DateTime#setFirstDayOfWeek(Week)
*/
public static int weekOfYear(Date date) {
return DateTime.of(date).weekOfYear();
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
index 6700bb29b..134f377fa 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java
@@ -421,6 +421,18 @@ public class IoUtil {
// -------------------------------------------------------------------------------------- read start
+ /**
+ * 从流中读取UTF8编码的内容
+ *
+ * @param in 输入流
+ * @return 内容
+ * @throws IORuntimeException IO异常
+ * @since 5.4.4
+ */
+ public static String readUtf8(InputStream in) throws IORuntimeException {
+ return read(in, CharsetUtil.CHARSET_UTF_8);
+ }
+
/**
* 从流中读取内容
*
@@ -1251,7 +1263,7 @@ public class IoUtil {
* @throws IORuntimeException IO异常
* @since 5.4.0
*/
- public static long checksumValue(InputStream in, Checksum checksum){
+ public static long checksumValue(InputStream in, Checksum checksum) {
return checksum(in, checksum).getValue();
}
}
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 e44b818b0..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
@@ -5,6 +5,8 @@ import cn.hutool.core.text.replacer.ReplacerChain;
/**
* HTML4的ESCAPE
+ * 参考:Commons Lang3
+ *
* @author looly
*
*/
diff --git a/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java
index b1e7081fc..59670070d 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/PageUtil.java
@@ -160,9 +160,10 @@ public class PageUtil {
* @return 分页条
*/
public static int[] rainbow(int pageNo, int totalPage, int displayCount) {
- boolean isEven = displayCount % 2 == 0;
- int left = displayCount / 2;
- int right = displayCount / 2;
+ // displayCount % 2
+ boolean isEven = (displayCount & 1) == 0;
+ int left = displayCount >> 1;
+ int right = displayCount >> 1;
int length = displayCount;
if (isEven) {
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 238667630..76cb16472 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
@@ -37,4 +37,11 @@ public class EscapeUtilTest {
String unescape = EscapeUtil.unescape(escape);
Assert.assertEquals(str, unescape);
}
+
+ @Test
+ public void escapeSinleQuotesTest(){
+ String str = "'some text with single quotes'";
+ final String s = EscapeUtil.escapeHtml4(str);
+ Assert.assertEquals(str, s);
+ }
}
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/mail/GlobalMailAccount.java b/hutool-extra/src/main/java/cn/hutool/extra/mail/GlobalMailAccount.java
index 417441b9f..ca9ab1796 100644
--- a/hutool-extra/src/main/java/cn/hutool/extra/mail/GlobalMailAccount.java
+++ b/hutool-extra/src/main/java/cn/hutool/extra/mail/GlobalMailAccount.java
@@ -38,7 +38,7 @@ public enum GlobalMailAccount {
for (String mailSettingPath : MailAccount.MAIL_SETTING_PATHS) {
try {
return new MailAccount(mailSettingPath);
- } catch (IORuntimeException e) {
+ } catch (IORuntimeException ignore) {
//ignore
}
}
diff --git a/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java b/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java
index d2dfc74b6..b13120f25 100644
--- a/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java
+++ b/hutool-http/src/main/java/cn/hutool/http/webservice/SoapClient.java
@@ -93,7 +93,7 @@ public class SoapClient extends HttpBase {
* 创建SOAP客户端,默认使用soap1.1版本协议
*
* @param url WS的URL地址
- * @return {@link SoapClient}
+ * @return this
*/
public static SoapClient create(String url) {
return new SoapClient(url);
@@ -104,7 +104,7 @@ public class SoapClient extends HttpBase {
*
* @param url WS的URL地址
* @param protocol 协议,见{@link SoapProtocol}
- * @return {@link SoapClient}
+ * @return this
*/
public static SoapClient create(String url, SoapProtocol protocol) {
return new SoapClient(url, protocol);
@@ -116,7 +116,7 @@ public class SoapClient extends HttpBase {
* @param url WS的URL地址
* @param protocol 协议,见{@link SoapProtocol}
* @param namespaceURI 方法上的命名空间URI
- * @return {@link SoapClient}
+ * @return this
* @since 4.5.6
*/
public static SoapClient create(String url, SoapProtocol protocol, String namespaceURI) {