diff --git a/commafeed-server/pom.xml b/commafeed-server/pom.xml
index 5dae894e..915e4b65 100644
--- a/commafeed-server/pom.xml
+++ b/commafeed-server/pom.xml
@@ -433,9 +433,9 @@
1.18.1
- com.github.albfernandez
- juniversalchardet
- 2.5.0
+ com.ibm.icu
+ icu4j
+ 75.1
net.sourceforge.cssparser
diff --git a/commafeed-server/src/main/java/com/commafeed/backend/feed/parser/EncodingDetector.java b/commafeed-server/src/main/java/com/commafeed/backend/feed/parser/EncodingDetector.java
index 6932c61b..0dc092d7 100644
--- a/commafeed-server/src/main/java/com/commafeed/backend/feed/parser/EncodingDetector.java
+++ b/commafeed-server/src/main/java/com/commafeed/backend/feed/parser/EncodingDetector.java
@@ -1,11 +1,12 @@
package com.commafeed.backend.feed.parser;
import java.nio.charset.Charset;
-import java.util.Optional;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
-import org.mozilla.universalchardet.UniversalDetector;
+
+import com.ibm.icu.text.CharsetDetector;
+import com.ibm.icu.text.CharsetMatch;
import jakarta.inject.Singleton;
@@ -52,10 +53,14 @@ class EncodingDetector {
* Detect encoding by analyzing characters in the array
*/
private Charset detectEncoding(byte[] bytes) {
- UniversalDetector detector = new UniversalDetector();
- detector.handleData(bytes);
- detector.dataEnd();
- String encoding = Optional.ofNullable(detector.getDetectedCharset()).orElse("UTF-8");
+ String encoding = "UTF-8";
+
+ CharsetDetector detector = new CharsetDetector();
+ detector.setText(bytes);
+ CharsetMatch match = detector.detect();
+ if (match != null) {
+ encoding = match.getName();
+ }
if (encoding.equalsIgnoreCase("ISO-8859-1")) {
encoding = "windows-1252";
}