powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / определение кодировки файла
7 сообщений из 7, страница 1 из 1
определение кодировки файла
    #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
определение кодировки файла
    #39627109
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и совсем уж странно то что
Код: java
1.
detector.getDetectedCharset();


возвращает WINDOWS-1255
при этом всегда
...
Рейтинг: 0 / 0
определение кодировки файла
    #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
определение кодировки файла
    #39627237
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и так, после анализа определился что если размер файла составляет примерно 400байтов и больше то уже правильно определяется cp866 , но cp1521 теперь стал определятся как KOI8-R
...
Рейтинг: 0 / 0
определение кодировки файла
    #39627255
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю что UniversalDetector определяет кодировку на основе статистики файла.
И возможно это определение не всегда точное. Зависит от данных которые внутри файла.
И процент кривых определений всегда будет. Надо с этим смириться. Ненадежный механизм.
...
Рейтинг: 0 / 0
определение кодировки файла
    #39627418
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоит отметить что на данных определенного размера и содержания решение задачи не возможно в принципе.
Автору стоит ознакомится с тем что такое однобайтовые кодировки и попробовать конкретезировать проблему именно для своих данных. Потому что универсальный инструмент, он слишком универсален чтобы учитывать конкретику именно вашей проблемы. А конкретика помогла бы задать нужную статистику в вашем случае.
...
Рейтинг: 0 / 0
определение кодировки файла
    #39628136
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, вроде так и есть


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


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