Проблема с кодировкой при чтении из двоичного файла

 
 
 
Сообщения:17
Получив поток из файла, форматирую файл побайтно. Но, прочитав файл обнаруживается абра-кадабра. Кодировка ASCII, но не русских букв, ни нормальных цифр нет. Преобразования класса Charset не канают. В чём загвоздка?
 
 
Сообщения:17
Проверял вывод в консоли и на разные компоненты awt. Что не удивительно, опять проблемы. Русские символы квадратами...
с - экземпляр скасса Charset. А c.defaultCharset() возвращает windows-1251. Как я все понимаю нужно ascii...

Код выглядит следующим образом.

        try {
            is = new FileInputStream(f);
            bis = new BufferedInputStream(is);
            byte reader[] = new byte[bis.available()];
            count = bis.read(reader);
            str = new String(reader, 0, count, "US-ASCII"); // тут ли проблема???
            System.out.print(str);
            bis.close();
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str + " - " + count + c.defaultCharset();



Что же делать?
 
 
Сообщения:3874
c.defaultCharset(), помоему, возвращает кодировку которая указана в системном параметре file.encoding (который в Windows - cp1251). Вы все правильно делаете, нужно указать кодировку при создании экземпляра строки из массива байт.
Указать кодировку можно, также, и при чтении файла.

Примеры :

http://www.javatalks.ru/sutra3397.php#3397
http://www.javatalks.ru/ftopic905.php
 
 
Сообщения:17
Ок, спасибо. Так и есть.
Возникает другой вопрос, а если файл в кодировке, которая не поддерживается ява-машиной. Например ANSI...
 
 
Сообщения:17
Простите, ошибка вышла, такая кодировка есть. Просто файл, который у меня есть, имеет поля разными кодировками, есть asciiz, символьные данные в ansi(windows) или в koi-8, а так же есть поля в юникоде. Как бы так ухитриться и грамотно все считать?
 
 
Сообщения:3874
Ну если у вы знаете где начаинается и где заканчивается текст в разной кодировке, можно читать эти блоки отдельно побайтово, а потом приводить к нужной кодировке каждый кусок.
 
 
Сообщения:17
Знаю, так и поступлю... Благо описание формата есть... Только кода будет очень много. Может есть способ как-нибудь применить более рацональный подход? Как-то нужно всё это оптимизировать, например ускорить процесс считавания файла...
 
 
Сообщения:3874
Честно говоря, я даже не знаю что и подсказать, единственный параметр которой вы можете оптимизировать - это количество повторений при считывании, если он у вас будет единица (т.е. вы всего один раз прочитаете последовательно файл) тогда скорость работы будет максимальной. Конечно, все зависит и от сложности формата, но тут я вам подсказать уже не могу ...
 
 
Сообщения:17
Спасибо за советы. Буду экспериментировать...
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет