gpt4 book ai didi

java - 猜测在 Java 中表示为 byte[] 的文本的编码

转载 作者:IT老高 更新时间:2023-10-28 20:55:54 29 4
gpt4 key购买 nike

给定一个以某种未知编码(通常是 UTF-8 或 ISO-8859-1,但不一定如此)表示文本的字节数组,猜测最可能使用的编码的最佳方法是什么(在 Java )?

值得注意的是:

  • 没有其他可用的元数据。字节数组实际上是唯一可用的输入。
  • 检测算法显然不会 100% 正确。如果算法在超过 80% 的情况下是正确的,那就足够了。

最佳答案

以下方法使用 juniversalchardet 解决问题,这是Mozilla的编码检测库的Java端口。

public static String guessEncoding(byte[] bytes) {
String DEFAULT_ENCODING = "UTF-8";
org.mozilla.universalchardet.UniversalDetector detector =
new org.mozilla.universalchardet.UniversalDetector(null);
detector.handleData(bytes, 0, bytes.length);
detector.dataEnd();
String encoding = detector.getDetectedCharset();
detector.reset();
if (encoding == null) {
encoding = DEFAULT_ENCODING;
}
return encoding;
}

上面的代码已经过测试,可以按预期工作。只需添加 juniversalchardet-1.0.3.jar到类路径。

我都测试过 juniversalchardetjchardet .我的总体印象是,juniversalchardet 提供了两个库中更好的检测精度和更好的 API。

关于java - 猜测在 Java 中表示为 byte[] 的文本的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1677497/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com