проблемка есть
читаю BufferedReader текстовый файлик
вывожу на консоль строки и получаеться бред
как нормально получить читаемую строку из файла на русском языке?!
да БОЛЬШОЕ спасибо за ответы!!!
Здравствуйте maxy, Вы писали:
M>проблемка есть M>читаю BufferedReader текстовый файлик M>вывожу на консоль строки и получаеться бред M>как нормально получить читаемую строку из файла на русском языке?! M>да БОЛЬШОЕ спасибо за ответы!!! :user:
Здравствуйте iLYA , Вы писали:
I>Здравствуйте maxy, Вы писали:
M>>проблемка есть M>>читаю BufferedReader текстовый файлик M>>вывожу на консоль строки и получаеться бред M>>как нормально получить читаемую строку из файла на русском языке?! M>>да БОЛЬШОЕ спасибо за ответы!!!
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
Да и так я тоже пробовал.
Все равно не получаеться.
На консоль выводиться русский в кодировке ДОС(это было и раньше).!!!
Так каже эту фигню в нормальною кодировку бросить?
Прошу и молю о помощи...
Для того, чтобы увидеть русские символы в DOS консоли, Вам нужно произвести настройки в Windows реестре,
Задать в реесте поиск и везде, где встречается ключ OEMCP изменить его содержимое (оно скорее всего 866) на 1251.
Это будет работать при условии, что Вы считываете файл в правильной кодировке. Напишите пожалуйста о результатах.
Re[6]: BufferedReader+русский язык
От:
Аноним
Дата:
04.04.02 13:04
Оценка:
Здравствуйте helen, Вы писали:
H>Для того, чтобы увидеть русские символы в DOS консоли, Вам нужно произвести настройки в Windows реестре,
H>Задать в реесте поиск и везде, где встречается ключ OEMCP изменить его содержимое (оно скорее всего 866) на 1251.
H>Это будет работать при условии, что Вы считываете файл в правильной кодировке. Напишите пожалуйста о результатах.
А вот и не получаеться так.
Ключ в реестре один такой всего лишь. Результат после смены значения такой же.
:shuffle: :???:
Здравствуйте Аноним, Вы писали:
А>Здравствуйте helen, Вы писали:
H>>Для того, чтобы увидеть русские символы в DOS консоли, Вам нужно произвести настройки в Windows реестре,
H>>Задать в реесте поиск и везде, где встречается ключ OEMCP изменить его содержимое (оно скорее всего 866) на 1251.
H>>Это будет работать при условии, что Вы считываете файл в правильной кодировке. Напишите пожалуйста о результатах.
А>А вот и не получаеться так. А>Ключ в реестре один такой всего лишь. Результат после смены значения такой же. А> :shuffle: :???:
Хм.... Дурацкий вопрос, так как идей нет вообще никаких, а компьютер перегружали? :))
А попробуйте еще для проверки в качестве выходного потока использовать не консоль, а FileOutputStream.
Если не получится, то я спрошу у наших спецов. В моем случае аналогичная проблема решилась исправлением реестра.
Здравствуйте helen, Вы писали:
H>Хм.... Дурацкий вопрос, так как идей нет вообще никаких, а компьютер перегружали?
ДА. H>А попробуйте еще для проверки в качестве выходного потока использовать не консоль, а FileOutputStream.
Вот когда пишу в файл, то все нормально — там русский(через FileOutputStream в том числе). H>Если не получится, то я спрошу у наших спецов. В моем случае аналогичная проблема решилась исправлением реестра.
Да спросите пожалуйста, а то бедненький второй день маюсь.
Здравствуйте maxy, Вы писали:
M>Здравствуйте helen, Вы писали:
H>>Хм.... Дурацкий вопрос, так как идей нет вообще никаких, а компьютер перегружали? :)) M>ДА. H>>А попробуйте еще для проверки в качестве выходного потока использовать не консоль, а FileOutputStream. M>Вот когда пишу в файл, то все нормально — там русский(через FileOutputStream в том числе). H>>Если не получится, то я спрошу у наших спецов. В моем случае аналогичная проблема решилась исправлением реестра. M>Да спросите пожалуйста, а то бедненький второй день маюсь. :user:
А попробуйте еще поэкспериментировать с фонтами в настройках DOS панели. У меня по умолчанию был выставлен точечный шрифт, сменив его на Lucida Console, жить стало проще :))
Здравствуйте 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();