J'ai vérifié juniversalchardet et ICU4J sur certains fichiers CSV, et les résultats sont incompatibles: juniversalchardet avait de meilleurs résultats:
- UTF-8: Les deux détectés.
- Windows 1255: juniversalchardet détecté quand il avait assez de lettres hébraïques, ICU4J pensaient encore était ISO-8859-1. Avec encore plus de lettres en hébreu, ICU4J l'a détecté comme ISO-8859-8 qui est l'autre codage hébreu (et donc le texte était OK).
- SHIFT_JIS (Japonais): juniversalchardet détecté et ICU4J pensait qu'il s'agissait de ISO-8859-2.
- ISO-8859-1: détecté par ICU4J, non pris en charge par juniversalchardet.
Il faut donc considérer les codages auxquels il devra probablement faire face. En fin de compte j'ai choisi ICU4J.
Notez que ICU4J est toujours maintenu.
Notez également que vous pouvez utiliser ICU4J, et dans le cas où elle retourne nulle parce qu'elle n'a pas réussi, essayez d'utiliser juniversalchardet. Ou le contraire.
AutoDetectReader de Apache Tika exactement ce que fait - essaie d'abord d'utiliser HtmlEncodingDetector, puis UniversalEncodingDetector (qui est basé sur juniversalchardet), et tente ensuite Icu4jEncodingDetector (basé sur ICU4J).
Notez que InputStreamReader.getEncoding() retourne simplement l'encodage passé dans le constructeur ou l'encodage par défaut de la plate-forme, il ne fait rien avec les données de flux. –
Merci! Je suis conscient de cela. C'est pourquoi je suis si impatient de savoir lequel est le meilleur. –
Il y a aussi Apache Tika, qui semble être basé sur ICU4J. –