![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Прокоментируйте вот этот код, чего не очень ясен.
Добавлено через 1 минуту и 21 секунду Переменной под названием consoleEncoding мы присваиваем что? |
|||
|
||||
| SoulSeeker |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 21.7.2008 Репутация: нет Всего: 2 |
Текущую кодировку консоли системы. Это сообщение отредактировал(а) SoulSeeker - 3.1.2011, 18:30 |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Обязательно ли конструктору getProperty передавать значение строковое consoleEncoding?
Это мы делаем из-за того что переменная типа Стринг названа consoleEncoding? Это сообщение отредактировал(а) Golovastik - 3.1.2011, 18:44 |
|||
|
||||
| SoulSeeker |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 21.7.2008 Репутация: нет Всего: 2 |
Это не конструктор, а статичный метод. Строка "consoleEncoding" - имя свойства виртуальной машины.
|
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
То есть мы пишем строку: "consoleEncoding" не из-за того что переменная типа string названа также?
|
|||
|
||||
| SoulSeeker |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 21.7.2008 Репутация: нет Всего: 2 |
Нет, это просто считывание свойства по его названию. Например, как из ini файла. Тут может гуру java-машины подскажут, как там свойства хранятся.
|
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Это считывание свойства из класса System по его названию? то есть в классе System есть объявленное свойство с именем consoleEncoding в который передаётся значение кодировки через метод getProperty? Это сообщение отредактировал(а) Golovastik - 3.1.2011, 19:47 |
|||
|
||||
| mgarin |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 19.8.2009 Где: Санкт-Петербург Репутация: 1 Всего: 3 |
Давайте с начала...
Через данный вызов, как уже было сказано, происходит считывание значения параметра "consoleEncoding". Пишите Вы конкретно "consoleEncoding" потому, что вам нужно узнать "кодировку консоли" (кэп, знаю). Например, если бы вам нужно было узнать версию Java-машины - вы бы сделали вот так:
Если вы вообще ничего не передадите как параметр (или пустой текст) Вы получите ошибку (еще при компилляции) или же проблемы при исполнении (в виде возврата null как результата, например). Откуда берется значение для указанного параметра? Ответ более чем полностью приведен в описании метода:
Добавлено через 2 минуты и 9 секунд Т.е. в итоге значение берется из некого системного хранилища/хранилища java-машины. Могу предположить, что при запуске jvm они все считываются в некую мапу и там хранятся до завершения работы. |
||||||
|
|||||||
| SoulSeeker |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 21.7.2008 Репутация: нет Всего: 2 |
Опять нет. Свойства не хранятся в коде. Они лежат вне программы - в виртуальной машине и ОС.
Вот тут кратко и понятно: http://www.herongyang.com/Java/System-JVM-...Properties.html Это сообщение отредактировал(а) SoulSeeker - 3.1.2011, 20:16 |
|||
|
||||
| Golovastik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
А это само свойство находится в классе System? Оно находится в этом классе,в него виндоус отправляет кодировку, которая потом извлекается методом getProperty? Скажите, а если ОС Линукс, как постатвить условие, что если например в ОС не установлена кодировка CP866 установить её?
Это сообщение отредактировал(а) Golovastik - 3.1.2011, 21:32 |
||||
|
|||||
| nc30 |
|
||||||||||
|
Интересующийся :) ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 24.6.2010 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
Чтобы у вас не было путаницы, я поменял название переменной (смысл не изменился)
Golovastik, кстати, вывести полный список системных свойств довольно легко. Поместите в ваш код следующие строки:
Видимо, идея автора приведенного вами кода была в смене кодировки стандартного потока вывода на другую. Например, чтобы метод System.out.println() делал вывод в иной кодировке (значение которой, как предполагается, задано свойством с именем consoleEncoding).
У себя в WinXP я свойства с таким ключом не нашел. Поэтому в моем случае как-раз таки возвращается null. Может быть в Linux есть свойство с таким именем. Как проверить? См. выше про печать списка свойств. |
||||||||||
|
|||||||||||
| Golovastik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Попробовал сделать русский ввод, не получается, только вывод русский, как сделать ввод ан русском языке?
Результат:
|
||||
|
|||||
| Temdegon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Потому что нужно указать кодировку ввода.
Какую именно кодировку указывать - я не знаю. Если запускаю из нетбинса, то все правильно отображает с такими настройками:
Если запустить из виндовой консоли - то отображает криво. Как ее правильно определить в рантайме, что бы работало везде и всегда - понятия не имею. Буду благодарен за подсказку. |
||||
|
|||||
| nc30 |
|
|||
|
Интересующийся :) ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 24.6.2010 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
Спасибо Skipy за ряд хороших статей посвященных вводу-выводу, кодировкам и т. п.
Это сообщение отредактировал(а) nc30 - 6.1.2011, 07:58 |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Вот так тоже не хочет, вводить русским в командной строке.
|
|||
|
||||
| priam220 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
В JDK6 появился класс Console, позволяющий решить вопросы с кодировкой:
Вывод:
Это сообщение отредактировал(а) priam220 - 6.1.2011, 17:27 |
||||
|
|||||
| nc30 |
|
||||||
|
Интересующийся :) ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 24.6.2010 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
Кодировку потока out для консоли тоже нужно переустановить
UPD: Не заметил последнего поста Это сообщение отредактировал(а) nc30 - 7.1.2011, 07:55 |
||||||
|
|||||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Да вы не поняли меня, вывод делается на русском, после вот этой строки.
Мне нужен ВВОД на русском Кто-нибудь знает? |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
для GUI
для консоли - лень возиться а оно тебе надо?! |
|||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Мне нужно сделать консольный ввод и вывод и то и другое. Вывод вот так:
А ввод как сделать? |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
||||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Подскажите, как в коде это выразить, так образно я тоже понимаю что это надо сделать.
|
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
||||
|
||||
| Golovastik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Если кто-нибудь знает как кодом написать чтоб был русский ввод, напишите.
Заранее благодарю. Это сообщение отредактировал(а) Golovastik - 8.1.2011, 22:26 |
|||
|
||||
| mgarin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 19.8.2009 Где: Санкт-Петербург Репутация: 1 Всего: 3 |
Смотря, опять же, что Вы под этим подразумеваете... Если переключение раскладки в ОС - то конкретно на Java - никак. Хоть этот функционал есть в каждой ОС - это нативная вещь, а Java и нативные вещи - несовместимые понятия... Даже распознание языка ввода работает не везде и не всегда, а уж переключение вообще только в мечтах. Я давно искал решения этого вопроса, так что точно могу сказать - без нативных средств (т.е. скажем отдельного приложения на C, производящего переключение раскладки по запросу Java-приложения) вам не обойтись, а с этим я не думаю, что Вы будете сейчас заморачиваться. Если же проблема в кодировке - вроде выше уже приводили решения проблемы?.. Они не подошли/не работают? P.S. Я вообще, впринципе, не особо понял в чем проблема - неужели Вы в консоли не можете поменять руками раскладку? И вводить далее на русском... Если же в итоге в приложении Вы получаете что-то не то - то это уже проблемы кодировки при считывании ввода - о том как их решить выше, вроде как, разъяснили Это сообщение отредактировал(а) mgarin - 9.1.2011, 00:57 |
|||
|
||||
| Golovastik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 19.7.2009 Репутация: 1 Всего: 0 |
Я хочу написать банальное.
ВВедите текст. Человек вводит на русском текст, а потом оператором вывода, выводится на русском текст. А получается вот такое:
И при выводе слова Привет я вижу такое:
Как сделать ,чтоб такого вывод не происходило. Напишите кодом пожалуйста. |
||||
|
|||||
| mgarin |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 19.8.2009 Где: Санкт-Петербург Репутация: 1 Всего: 3 |
Сразу бы так расписал, было бы гораздо быстрее решить проблему
Попробовал разные варианты - вот так (лично у меня) работает:
Собственно, на выходе вышло все как надо:
Т.е. вам нужно просто корректно задать кодировку для ридера строки, ничего волшебного P.S. Единственная оговорка - я проверял в IDEA IDE. Не уверен, что она не подмешивает чего эдакого при выводе Хотя, впринципе, не должна. Попробуйте, отпишитесь если что не пашет Это сообщение отредактировал(а) mgarin - 9.1.2011, 03:37 |
||||
|
|||||
![]()
|
| Правила форума "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. |