kno*_*orv 35 java encoding utf-8 character-encoding
给定一个字节数组表示某些未知编码中的文本(通常是UTF-8或ISO-8859-1,但不一定如此),获得最可能使用的编码(在Java中)的最佳方法是什么?
值得注意:
kno*_*orv 33
以下方法使用juniversalchardet解决了这个问题,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;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码已经过测试,可以按照预期的方式运行.只需将juniversalchardet-1.0.3.jar添加到类路径中即可.
我测试了juniversalchardet和jchardet.我的总体印象是juniversalchardet提供了更好的检测准确性和两个库的更好的API.
| 归档时间: |
|
| 查看次数: |
17356 次 |
| 最近记录: |