Java получить кодировку символов файла

Для чтения символьных файлов, если вы хотите прочитать ожидаемое текстовое содержимое, вам необходимо передать соответствующую кодировку файла. Если кодировка прочитанного файла не соответствует фактической кодировке файла, появятся искаженные символы. Эта статья предоставляет несколько способов получения файлов.Реализация кодировки. Формат кодировки файлов, описанный в этой статье, представляет собой китайскую кодировку UTF-8 и GB2312 (GBK) в узком смысле, а другие некитайские кодировки не рассматриваются.

Поэтому эта статья начинается с простого примера и предоставляет два файла, а именно GB2312.txt и UTF8.txt. Фактическая кодировка этих двух файлов может быть получена в коде соответственно. В настоящее время всего существует 3 метода, и детали следующие:

Jdk встроенный набор символов

Особой практики этого метода нет.Я выслушал сторону и сказал вскользь, в основном используя кодировку в Charset для кодирования, можно ли canEncode кодировать по заданной кодировке, а так же увидел, что содержимое файла читается. , а затем преобразовать в тип String, а затем сравнить текст после использования новой строки (файл content.getBytes (кодировка), кодировка) с исходным содержимым файла, если сравнение непротиворечиво, это означает, что указанная кодировка текста, этот метод является личным. Особого мастерства нет, поэтому его можно упомянуть здесь.

Guava предоставляет класс инструментов Utf8

@Test
public void testGuava() throws Exception {
    byte[] gb2312Bytes = FileUtils.readFileToByteArray(new File("c:\\test\\GB2312.txt"));
    System.out.println("GB2312.txt文件是否是UTF-8编码:" + Utf8.isWellFormed(gb2312Bytes));
    byte[] utf8ytes = FileUtils.readFileToByteArray(new File("c:\\test\\UTF-8.txt"));
    System.out.println("UTF-8.txt文件是否是UTF-8编码:" + Utf8.isWellFormed(utf8ytes));
}

Выходные данные файла GB2312.txt — ложь, а выходные данные файла UTF-8.txt — истина Этот пример показывает, является ли байтовая кодировка содержимого прочитанного файла кодировкой UTF-8.

Проект с открытым исходным кодом Github Cpdetector

Поработав какое-то время с открытым исходным кодом проекта Github Cpdetector, я обнаружил, что формат кодировки указанного файла можно получить, передав файловый поток или адрес файла.Эта реализация неплохая. Из-за короткого времени анализа, но ожидается, что выходные результаты будут лучше, если он применяется в реальном проекте, требуется дальнейший раунд подробного исследования.Например, для детектораProxy необходимо добавить больше экземпляров экземпляров.Справочный код следующее:

@Test
public testCpdetector() throws Exception {
    File file1 = new File("c:\\test\\GB2312.txt");
    File file2 = new File("c:\\test\\UTF-8.txt");
    CodepageDetectorProxy detectorProxy = CodepageDetectorProxy.getInstance();
    detectorProxy.add(ASCIIDetector.getInstance());
    detectorProxy.add(UnicodeDetector.getInstance());
    detectorProxy.add(JChardetFacade.getInstance());
    System.out.println(detectorProxy.detectCodepage(file1.toURI().toURL()) + "----UTF-8编码");
    System.out.println(detectorProxy.detectCodepage(file2.toURI().toURL()) + "----GB2312编码");
}

Апач Тика

Проект с открытым исходным кодом Apache Tika может обнаруживать и извлекать метаданные и структурированный контент из документов в различных форматах (таких как HTML, PDF, OFFICE, jar, zip, mp3 и т. д., более тысячи различных типов файлов), Tika может использоваться Он используется для индексации поисковыми системами, контент-анализа, перевода и т. д., так что это определенно не проблема, если он используется только для получения кодировки файлов, но я лично узнал об этом с официального сайта, и после написания некоторых связанных примеров а запустить его - не проблема.Получить желаемый результат (но я думаю, что это точно возможно), так что давайте, и изучайте дальше, когда возникнут аналогичные потребности позже.

Обратитесь к другим адресам: https://www.chendd.cn/blog/article/1550863959014342657.html .

Supongo que te gusta

Origin blog.csdn.net/haiyangyiba/article/details/129087357
Recomendado
Clasificación