|
Модераторы: LSD, AntonSaburov |
|
develjar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.5.2016 Репутация: нет Всего: нет |
При открытии txt файла в консоли NetBeans, английские буквы отображаются нормально, а русский получаются символами, как сделать нормальную кодировку и вывод этого всего в JTextArea, а не в консоль?
Код:
|
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15708 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
Вместо FileReader использовать InputStreamReader и явно указать ему правильную кодировку.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
develjar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.5.2016 Репутация: нет Всего: нет |
Заменил. Выдает ошибку в строке которую заменил Код: mi1.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent event) { JFileChooser fileopen = new JFileChooser(); int ret = fileopen.showDialog(null, "Открыть файл"); if (ret == JFileChooser.APPROVE_OPTION) { } File f = fileopen.getSelectedFile(); try (Reader reader = new InputStreamReader(new FileInputStream(pathToFile), <encoding>)) { char[] buffer = new char[(int)f.length()]; reader.read(buffer); System.out.println(new String(buffer)); } catch(IOException tx){ System.out.println(tx.getMessage()); } } }); |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15708 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
develjar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.5.2016 Репутация: нет Всего: нет |
try (Reader reader = new InputStreamReader(new FileInputStream(), "UTF-8")) файл должен указываться вручную . Это сообщение отредактировал(а) develjar - 31.5.2016, 16:54 |
|||
|
||||
SVN74 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
Ничего не надо было менять, просто в вывод надо было добавить перекодировку, кодировку надо подбирать... System.out.println(new String((new String(buffer)).getBytes("cp1251"))); Это сообщение отредактировал(а) SVN74 - 31.5.2016, 17:23 |
|||
|
||||
develjar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.5.2016 Репутация: нет Всего: нет |
Тут проблема в том , что при выводе на консоль выводится нормально, но в JTextArea, какую не ставь кодировку отображается все равно квадратами. По этому тут уже другой вопрос. JTextArea tx = new JTextArea (30,50); tx.read( new FileReader( f.getAbsolutePath() ), null ); |
|||
|
||||
SVN74 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
По видимому у вас кодировка файла "windows-1251", вот набросал для, работает с JTextArea...
|
|||
|
||||
develjar |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.5.2016 Репутация: нет Всего: нет |
И в чем разница с этим кодом? Код: File f = fileopen.getSelectedFile(); try (Reader reader = new InputStreamReader(new FileInputStream(f), "Cp1251")) { char[] buffer = new char[(int)f.length()]; reader.read(buffer); tx.read( new FileReader( f.getAbsolutePath() ), null ); } catch(IOException tx){ System.out.println(tx.getMessage()); } } }); |
||||
|
|||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15708 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
НИКОГДА так не делайте. Если у вас "кракозябры" в String, то исправлять надо метод которые читает данные из байтов, а не костылить строки. develjar, 1. Начни уже пользоваться тегами [Код], невозможно же читать. 2. Зачем ты вначале создаешь Reader reader, а потом упорно продолжаешь как и раньше tx.read(new FileReader(f.getAbsolutePath() ), null); ? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
develjar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.5.2016 Репутация: нет Всего: нет |
Это нашел в примере как сделать,оттуда скопировал, по этому ни чего не могу сказать |
|||
|
||||
SVN74 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
Разница в том, что это работает.... Взят файл с соответствующей кодировкой для проверки Если добавить ... tx.setText(str); , все отображается правильно... Это сообщение отредактировал(а) SVN74 - 1.6.2016, 22:11 |
|||
|
||||
develjar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 27.5.2016 Репутация: нет Всего: нет |
Да, правильно. |
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |