Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / определение кодировки файла / 7 сообщений из 7, страница 1 из 1
07.04.2018, 11:35
    #39627108
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение кодировки файла
Здравствуйте, всем!
ребята почему всегда получаю дефолтЭнкодинг?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
public static String detectEncoding(File file) throws IOException {
        UniversalDetector detector = new UniversalDetector(null);
        InputStream stream = null;
        stream = new FileInputStream(file);
        byte[] buffer = new byte[4096];
        int read;
        while ((read = stream.read(buffer)) > 0 && !detector.isDone()) {
            detector.handleData(buffer, 0, read);
        }

        detector.dataEnd();

        String encoding = detector.getDetectedCharset();
        detector.reset();

        return encoding;
    }

       public static String detectEncodingDefault(File inFile, String defaultEncoding) {
        String detected = null;
        try {
            detected = detectEncoding(inFile);
        } catch (IOException ex) {
            // Ignore
        }
        return detected == null ? defaultEncoding : detected;
    }
...
Рейтинг: 0 / 0
07.04.2018, 11:47
    #39627109
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение кодировки файла
и совсем уж странно то что
Код: java
1.
detector.getDetectedCharset();


возвращает WINDOWS-1255
при этом всегда
...
Рейтинг: 0 / 0
07.04.2018, 14:51
    #39627136
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение кодировки файла
и так после добавления ещё одного метода точнее теперь уже пример с интернета

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
public static String detectEncoding(File inFile) throws IOException {
        FileInputStream stream = new FileInputStream(inFile);
        try {
            return detectEncoding(stream);
        } finally {
            stream.close();
        }
    }

    public static String detectEncoding(InputStream stream) throws IOException {
        UniversalDetector detector = new UniversalDetector(null);

        byte[] buffer = new byte[4096];
        int read;
        while ((read = stream.read(buffer)) > 0 && !detector.isDone()) {
            detector.handleData(buffer, 0, read);
        }

        detector.dataEnd();

        String encoding = detector.getDetectedCharset();
        detector.reset();

        return encoding;
    }

    public static String detectEncodingDefault(File inFile, String defaultEncoding) {
        String detected = null;
        try {
            detected = detectEncoding(inFile);
        } catch (IOException ex) {
            // Ignore
        }
        return detected == null ? defaultEncoding : detected;
    }



получается что,
если у файла кодировка:
utf-8 - определяется как utf-8
cp1251 - определяется как WINDOWS-1252
cp866 - как WINDOWS-1255

почему так?
...
Рейтинг: 0 / 0
08.04.2018, 06:52
    #39627237
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение кодировки файла
и так, после анализа определился что если размер файла составляет примерно 400байтов и больше то уже правильно определяется cp866 , но cp1521 теперь стал определятся как KOI8-R
...
Рейтинг: 0 / 0
08.04.2018, 09:39
    #39627255
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение кодировки файла
Подозреваю что UniversalDetector определяет кодировку на основе статистики файла.
И возможно это определение не всегда точное. Зависит от данных которые внутри файла.
И процент кривых определений всегда будет. Надо с этим смириться. Ненадежный механизм.
...
Рейтинг: 0 / 0
09.04.2018, 11:10
    #39627418
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение кодировки файла
Стоит отметить что на данных определенного размера и содержания решение задачи не возможно в принципе.
Автору стоит ознакомится с тем что такое однобайтовые кодировки и попробовать конкретезировать проблему именно для своих данных. Потому что универсальный инструмент, он слишком универсален чтобы учитывать конкретику именно вашей проблемы. А конкретика помогла бы задать нужную статистику в вашем случае.
...
Рейтинг: 0 / 0
10.04.2018, 21:38
    #39628136
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
определение кодировки файла
mayton, вроде так и есть


Blazkowicz, вообще мне достаточна ср866 т.к. все файлы на этой кодировке, но просто хотел сделать что то универсальное чтоб дальнейшем можно было пользоваться в других проектах в качестве библиотеки.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / определение кодировки файла / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]