diff --git a/pom.xml b/pom.xml
index be0478788..49721b44c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,7 @@
23.7
1.70
1.0.3
+ 70.1
1.5.0
3.9.0
diff --git a/server/pom.xml b/server/pom.xml
index ddcfcd85e..dc79deaad 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -129,6 +129,11 @@
juniversalchardet
${juniversalchardet.version}
+
+ com.ibm.icu
+ icu4j
+ ${icu4j.version}
+
diff --git a/server/src/main/java/cn/keking/utils/EncodingDetects.java b/server/src/main/java/cn/keking/utils/EncodingDetects.java
index 3ef4ad9e2..aa465161c 100644
--- a/server/src/main/java/cn/keking/utils/EncodingDetects.java
+++ b/server/src/main/java/cn/keking/utils/EncodingDetects.java
@@ -1,5 +1,7 @@
package cn.keking.utils;
+import com.ibm.icu.text.CharsetDetector;
+import com.ibm.icu.text.CharsetMatch;
import org.mozilla.universalchardet.UniversalDetector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,7 +46,14 @@ public static String getJavaEncode(byte[] content) {
detector.dataEnd();
String charsetName = detector.getDetectedCharset();
if (charsetName == null) {
- charsetName = Charset.defaultCharset().name();
+ CharsetDetector cd = new CharsetDetector();
+ cd.setText(content);
+ CharsetMatch cm = cd.detect();
+ if (cm != null) {
+ charsetName = cm.getName();
+ } else {
+ charsetName = Charset.defaultCharset().name();
+ }
}
return charsetName;
}