BufferedReader+русский язык
От: maxy  
Дата: 28.03.02 23:11
Оценка:
проблемка есть
читаю BufferedReader текстовый файлик
вывожу на консоль строки и получаеться бред
как нормально получить читаемую строку из файла на русском языке?!
да БОЛЬШОЕ спасибо за ответы!!!
Re: BufferedReader+русский язык
От: iLYA Канада http://www.bizon.org/ilya/
Дата: 02.04.02 16:07
Оценка:
Здравствуйте maxy, Вы писали:

M>проблемка есть

M>читаю BufferedReader текстовый файлик
M>вывожу на консоль строки и получаеться бред
M>как нормально получить читаемую строку из файла на русском языке?!
M>да БОЛЬШОЕ спасибо за ответы!!! :user:

Прю...
Лови, у меня так все ок работает:


FileInputStream stream = new FileInputStream ( FileName );
InputStreamReader reader = new InputStreamReader ( stream );
BufferedReader buffered_reader = new BufferedReader ( reader );
                
String fileTxT = "";
String buf;
                
while ( ( buf = buffered_reader.readLine () ) != null )
fileTxt += buf + "\r\n";

buffered_reader.close();
reader.close();
stream.close();


Удачи,
iLYA
Re[2]: BufferedReader+русский язык
От: maxy  
Дата: 03.04.02 16:55
Оценка:
Здравствуйте iLYA , Вы писали:

I>Здравствуйте maxy, Вы писали:


M>>проблемка есть

M>>читаю BufferedReader текстовый файлик
M>>вывожу на консоль строки и получаеться бред
M>>как нормально получить читаемую строку из файла на русском языке?!
M>>да БОЛЬШОЕ спасибо за ответы!!!

I>Прю...

I>Лови, у меня так все ок работает:


I>
I>FileInputStream stream = new FileInputStream ( FileName );
I>InputStreamReader reader = new InputStreamReader ( stream );
I>BufferedReader buffered_reader = new BufferedReader ( reader );
I>                
I>String fileTxT = "";
I>String buf;
I>                
I>while ( ( buf = buffered_reader.readLine () ) != null )
I>fileTxt += buf + "\r\n";

I>buffered_reader.close();
I>reader.close();
I>stream.close();
I>


I>Удачи,

I>iLYA

НЕ РАБОТАЕТ!
этот код не работает

import java.io.*;
public class test{
    public static void main(String[] args){
        try{
            FileInputStream stream = new FileInputStream ("file.txt");
            InputStreamReader reader = new InputStreamReader ( stream );
            BufferedReader buffered_reader = new BufferedReader ( reader );
                            
            String fileTxT = "";
            String buf;
                            
            while ( ( buf = buffered_reader.readLine () ) != null )
                fileTxT += buf + "\r\n";
            
            System.out.print(fileTxT);
            
            buffered_reader.close();
            reader.close();
            stream.close();
        }catch(IOException IOEx){
            System.out.println(IOEx.toString());
        }
    }
}

у меня файл в кодировке "Cp1251"
на консоль все равно выводит вместо русского фигню!!!

Re[3]: BufferedReader+русский язык
От: iLYA Канада http://www.bizon.org/ilya/
Дата: 03.04.02 18:22
Оценка:
Прю...
Тогда пробуй так:


FileInputStream fis =  new FileInputStream("your_file_name.txt");
BufferedReader r = new BufferedReader(new InputStreamReader(fis, "Cp1251"));
String myString = r.readLine();
r.close();


Удачи,
iLYA
Re[4]: BufferedReader+русский язык
От: maxy  
Дата: 04.04.02 10:36
Оценка:
Здравствуйте iLYA , Вы писали:


I>Прю...

I>Тогда пробуй так:


I>
I>FileInputStream fis =  new FileInputStream("your_file_name.txt");
I>BufferedReader r = new BufferedReader(new InputStreamReader(fis, "Cp1251"));
I>String myString = r.readLine();
I>r.close();
I>


I>Удачи,

I>iLYA
Да и так я тоже пробовал.
Все равно не получаеться.
На консоль выводиться русский в кодировке ДОС(это было и раньше).!!!
Так каже эту фигню в нормальною кодировку бросить?
Прошу и молю о помощи...

maxy
:shuffle:
Re[5]: BufferedReader+русский язык
От: helen  
Дата: 04.04.02 10:46
Оценка:
Для того, чтобы увидеть русские символы в DOS консоли, Вам нужно произвести настройки в Windows реестре,
Задать в реесте поиск и везде, где встречается ключ OEMCP изменить его содержимое (оно скорее всего 866) на 1251.

Это будет работать при условии, что Вы считываете файл в правильной кодировке. Напишите пожалуйста о результатах.
Re[6]: BufferedReader+русский язык
От: Аноним  
Дата: 04.04.02 13:04
Оценка:
Здравствуйте helen, Вы писали:

H>Для того, чтобы увидеть русские символы в DOS консоли, Вам нужно произвести настройки в Windows реестре,


H>Задать в реесте поиск и везде, где встречается ключ OEMCP изменить его содержимое (оно скорее всего 866) на 1251.


H>Это будет работать при условии, что Вы считываете файл в правильной кодировке. Напишите пожалуйста о результатах.


А вот и не получаеться так.
Ключ в реестре один такой всего лишь. Результат после смены значения такой же.
:shuffle: :???:
Re[7]: BufferedReader+русский язык
От: helen  
Дата: 04.04.02 13:21
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте helen, Вы писали:


H>>Для того, чтобы увидеть русские символы в DOS консоли, Вам нужно произвести настройки в Windows реестре,


H>>Задать в реесте поиск и везде, где встречается ключ OEMCP изменить его содержимое (оно скорее всего 866) на 1251.


H>>Это будет работать при условии, что Вы считываете файл в правильной кодировке. Напишите пожалуйста о результатах.


А>А вот и не получаеться так.

А>Ключ в реестре один такой всего лишь. Результат после смены значения такой же.
А> :shuffle: :???:


Хм.... Дурацкий вопрос, так как идей нет вообще никаких, а компьютер перегружали? :))
А попробуйте еще для проверки в качестве выходного потока использовать не консоль, а FileOutputStream.
Если не получится, то я спрошу у наших спецов. В моем случае аналогичная проблема решилась исправлением реестра.
Re[8]: BufferedReader+русский язык
От: maxy  
Дата: 04.04.02 15:15
Оценка:
Здравствуйте helen, Вы писали:

H>Хм.... Дурацкий вопрос, так как идей нет вообще никаких, а компьютер перегружали?

ДА.
H>А попробуйте еще для проверки в качестве выходного потока использовать не консоль, а FileOutputStream.
Вот когда пишу в файл, то все нормально — там русский(через FileOutputStream в том числе).
H>Если не получится, то я спрошу у наших спецов. В моем случае аналогичная проблема решилась исправлением реестра.
Да спросите пожалуйста, а то бедненький второй день маюсь.
Re[9]: BufferedReader+русский язык
От: helen  
Дата: 08.04.02 07:57
Оценка: 3 (1)
Здравствуйте maxy, Вы писали:

M>Здравствуйте helen, Вы писали:


H>>Хм.... Дурацкий вопрос, так как идей нет вообще никаких, а компьютер перегружали? :))

M>ДА.
H>>А попробуйте еще для проверки в качестве выходного потока использовать не консоль, а FileOutputStream.
M>Вот когда пишу в файл, то все нормально — там русский(через FileOutputStream в том числе).
H>>Если не получится, то я спрошу у наших спецов. В моем случае аналогичная проблема решилась исправлением реестра.
M>Да спросите пожалуйста, а то бедненький второй день маюсь. :user:


А попробуйте еще поэкспериментировать с фонтами в настройках DOS панели. У меня по умолчанию был выставлен точечный шрифт, сменив его на Lucida Console, жить стало проще :))
Re[8]: BufferedReader+русский язык
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 22.04.02 08:43
Оценка:
Здравствуйте helen, Вы писали:

H>Хм.... Дурацкий вопрос, так как идей нет вообще никаких, а компьютер перегружали?

H>А попробуйте еще для проверки в качестве выходного потока использовать не консоль, а FileOutputStream.
H>Если не получится, то я спрошу у наших спецов. В моем случае аналогичная проблема решилась исправлением реестра.

Может я немного поздно. Может проблемму уже и решили. Но хочу внести ясность. Если бы для корректной работы жабы надо было бы перегружать компьтер, или руками лазить в реестр (хочу заметить — он есть не на всех платформах) — то нафига она нужна, такая жаба. Что бы все заработало следовало прочитать одно предложения в мануале по классу java.io.PrintStream, объектом коего и является наш System.out. А написано там следующее: All characters printed by a PrintStream are converted into bytes using the platform's default character encoding. То есть, прочитали мы файл в кодировке Cp1251, сконвертировали в byte[] использеуя default character encoding и пишем в консоль, которая умеет отображать русский в кодировке Cp866...
Проверим:
 public void testEncoding() {
  OutputStreamWriter out = new OutputStreamWriter(System.out); // используем кодировку по умолчанию.
  System.out.println(out.getEncoding());
 }

Что получается (у меня). Кодировка по умолчанию — Cp1251. То есть входную строку в Cp1251 конвертирую в байтики используя ее же и байтики отображаю в Cp866. Лажа. А выхода три:
1) предложенный ранее (полазить по реестру). Но не везде полазишь;
2) настроить среду жабы, что бы она эзала по умолчанию Cp866, а не Cp1251;
3) Читаем там же в мануалке еще одно предложение: The PrintWriter class should be used in situations that require writing characters rather than bytes. То что надо.
Writer out = new BufferedWriter(new OutputStreamWriter(System.out), "Cp866");
out.write(fileTxT);
out.flush();

И все тик-так.
Re[9]: BufferedReader+русский язык
От: maxy  
Дата: 22.04.02 17:27
Оценка:
Да я это проблему таким макаром и решил.
Был очч сильно удивлен как это делаеться.
БОЛЬШОЕ СПАСИБО ВСЕМ кто помогал!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.