Ответ 1
Я проверил juniversalchardet и ICU4J на некоторых файлах CSV, и результаты несовместимы: juniversalchardet имел лучшие результаты:
- UTF-8: оба обнаружены.
- Windows-1255: juniversalchardet обнаружен, когда у него было достаточно букв на иврите, ICU4J все еще считал, что это ISO-8859-1. С еще большим количеством букв на иврите ICU4J обнаружил его как ISO-8859-8, который является другим ивритским кодированием (и поэтому текст был в порядке).
- SHIFT_JIS (японский): обнаружен juniversalchardet, и ICU4J думал, что это ISO-8859-2.
- ISO-8859-1: обнаружен ICU4J, не поддерживается juniversalchardet.
Итак, следует рассмотреть, какие кодировки он, скорее всего, придется иметь дело. В конце я выбрал ICU4J.
Обратите внимание, что ICU4J все еще поддерживается.
Также обратите внимание, что вы можете использовать ICU4J, и в случае, если он возвращает null, потому что это не удалось, попробуйте использовать juniversalchardet. Или наоборот.
AutoDetectReader Apache Tika делает именно это - сначала пытается использовать HtmlEncodingDetector, затем UniversalEncodingDetector (который основан на juniversalchardet), а затем пытается Icu4jEncodingDetector (на основе ICU4J).