Вывод на консоль в Windows. Команда chcp
Вывод на консоль в Windows. Команда chcp Большинство простых программ, написанных на Java выводят какие-либо данные на консоль. Вывод на консоль предоставляет возможность выбрать кодировку, в которой будут выводиться данные вашей программы. Запустить окно консоли можно нажав Пуск -> Выполнить, а затем ввести и запустить команду cmd. Вывод на консоль в Windows по умолчанию производится в кодировке Cp866. Чтобы узнать в какой кодировке выводятся символы в консоли, следует набрать команду chcp. С помощью этой же команды можно задавать кодировку, в которой будут выводиться символы. Например chcp 1251. Фактически данная команда создана только для того, чтобы отражать или изменять номер текущей кодовой страницы консоли.
Кодовые страницы, отличные от Cp866 будут правильно отображаться только в полноэкранном режиме или в окне командной строки, использующем шрифты TrueType. Например: Для того, чтобы увидеть последующий вывод, необходимо сменить текущий шрифт на шрифт True Type. Подведите курсор на заголовок окна консоли, щелкните правой кнопкой мыши и выберите опцию “Свойства”. В появившемся окне перейдите вкладку Шрифт и в ней выберите шрифт, напротив которого будет стоять двойная буква Т. Вам будет предложено сохранить данную настройку для текущего окна или для всех окон. В итоге ваше окно консоли примет вид: Таким образом, манипулируя данной командой можно видеть результаты вывода вашей программы в зависимости от кодировки. Системные свойства file. encoding, console. encoding и вывод на консоль Прежде чем затрагивать тему кодировок в исходных кодах программ следует четко уяснить, для чего предназначены, и как работают системные свойства file. encoding и console. encoding. Кроме этих системных свойств присутствует еще ряд других. Вывести на экран все текущие системные свойства можно с помощью следующей программы:
Пример вывода программы: В операционной системе Windows по умолчанию file. encoding=Сp1251. Однако существует еще одно свойство console. encoding, которое указывает, в какой кодировке следует производить вывод на консоль. file. encoding указывает Java машине в какой кодировке следует считывать исходные коды программ, если кодировка не указана пользователем при компиляции. Фактически, данное системное свойство распространяется и на вывод с помощью System. out. println().
По умолчанию данное свойство не установлено. Эти системные свойства можно устанавливать и в вашей программе, однако, для нее это уже будет не актуально, поскольку виртуальная машина пользуется теми значениями, которые были считаны перед компиляцией и запуском вашей программы. Кроме того, как только ваша программа отрабатывает, системные свойства восстанавливаются. В этом можно убедиться, запустив дважды следующую программу. /** * @author < a href=" mailto: zagrebin_v@mail. ru" > Victor Zagrebin < /a> */ public class SetPropertyDemo { public static void main(String[] args) { System. out. println(" file. encoding before=" +System. getProperty(" file. encoding" )); System. out. println(" console. encoding before=" +System. getProperty(" console. encoding" )); System. setProperty(" file. encoding", " Cp866" ); System. setProperty(" console. encoding", " Cp866" ); System. out. println(" file. encoding after=" +System. getProperty(" file. encoding" )); System. out. println(" console. encoding after=" +System. getProperty(" console. encoding" )); } }Установка данных свойств в программе необходима в тех случаях, когда оно используется в последующем коде до завершения работы программы. Воспроизведем еще ряд типичных примеров, с проблемами, которыми сталкиваются программисты при выводе. Допустим, у нас есть следующая программа:
Кроме этой программы будем оперировать дополнительными факторами:
javac CyryllicDemo. java java CyryllicDemo Кодировка файла: Cp1251 Кодировка консоли: Cp866 Вывод: └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ▄ █ ┌ ▌ ▐ ▀ рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙ №√ ·¤■ javac CyryllicDemo. java Кодировка файла: Cp866 Кодировка консоли: Cp866 Вывод: CyryllicDemo. java: 5: warning: unmappable character for encoding Cp1251 String s1 = " АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧ? ЩЬЫЪЭЮЯ"; javac CyryllicDemo. java -encoding Cp866 java -Dfile. encoding=Cp866 CyryllicDemo Кодировка файла: Cp866 Кодировка консоли: Cp866 Вывод: АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ абвгдежзийклмнопрстуфхцчшщьыъэюя javac CyryllicDemo. java -encoding Cp1251 java -Dfile. encoding=Cp866 CyryllicDemo Кодировка файла: Cp1251 Кодировка консоли: Cp866 Вывод: АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ абвгдежзийклмнопрстуфхцчшщьыъэюя Особо следует обратить внимание на проблему “Куда делась буква Ш? ” из второй серии запусков. Еще внимательнее к этой проблеме следует относиться, если вы заранее не знаете, какой текст будет храниться в выводимой строке, и по наивности сделаете компиляцию без задания кодировки. Если у вас действительно в строке не будет буквы Ш, то компиляция выполнится удачно и запуск тоже. И на этом вы даже забудете, что упускаете мелочь (букву Ш), которая может потенциально встретиться в выводимой строке и неизбежно приведет к дальнейшим ошибкам. В третьей и четвертой серии при компиляции и запуске используются ключи: -encoding Cp866 и -Dfile. encoding=Cp866. Ключ -encoding указывает, в какой кодировке следует считывать файл с исходным кодом программы. Ключ -Dfile. encoding=Cp866 указывает, в какой кодировке следует производить вывод.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|