![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15717 Регистрация: 24.3.2004 Где: Dublin Репутация: 209 Всего: 537 |
При запуске программы в консоли Windows, часто бывает проблема с отображением русских букв. В данной ситуации возможно два решения - "исправить" консоль в Windows или "исправить" программу.
Проблема эта возникает из-за того, что умолчальная кодировка Windows - windows-1251, а в консоли Windows используется кодировка Cp866. Возможно 4 разных пути решения данной проблемы. Первый вариант, самый предпочтительный и не требует менять код, так что подходит для любой программы. Запускаем консоль, щелкаем на заголовке окна и выбираем свойства. В свойствах на закладке Шрифт ставим шрифт Lucida Console и жмем ОК. Далее набираем в консоли ChCp 1251, в ответ получаем Текущая кодовая страница: 1251. Теперь запускаем Java программу и убеждаемся, что все работает. При желании можно написать bat-файл куда вставить ChCp 1251 и создать для этого файла ярлык, в свойствах которого прописать шрифт Lucida Console. Второй вариант - изменить умолчальную кодировку для Java программ. Менять исходный код программы тоже не требуется, но возможны некоторые побочные эффекты. Например FileWriter и все использующие его компоненты, будут писать файлы не в windows-1251, а в Cp866. Так же возможны проблемы с драйверами БД, которые по умолчанию ориентируются на системную кодировку. Чтобы изменить умолчальную кодировку для Java программ надо при запуске указать JVM параметр -Dfile.encoding=XXX, например так:
Третий вариант требует некоторого изменения исходного кода, надо при инициализации программы изменить PrintStream отвечающий за вывод в консоль, и настроить его на кодировку Cp866. УДобство этого метода состоит в том, что пользователю не надо ничего настраивать. Для этого в классе содержащем main() надо прописать:
Четвертый вариант доступен начиная с JDK 1.6. Для вывода в консоль использовать не стандартный поток вывода и ошибок, а специальный класс java.io.Console. Помимо правильного определения кодировки, этот класс обладает удобными методами для чтения данных из консоли:
-------------------- 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. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "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. |