Неправилно показване на българския характер - стек преливане на Руски

След като въпросът е излязъл на повърхността, ще му отговоря.

Вашият проблем е, че "конзолата" NetBeans - и OS конзола - това е малко по-различно. По-специално, те използват различни кодировки. Оптималната би било да се получи сегашната кодиране конзолата чрез приложния програмен интерфейс на конзолата - но Java не предвижда това. Ето защо е необходимо да се получи информация за конзолата, кодиращ различен начин. Така например, през console.encoding собственост.

Като за начало, настройка на имота с предварително определена стойност console.encoding нищо. Този имот е просто няма кой да чете. Вместо да го сложи в cp866. трябва, напротив, да се прочете стойността от него.

По този начин, вместо да се налага да чакам за вход в cp866. Програмата ви позволява да стартирате го посочите някое кодиране (UTF-8 - това е кодировка по подразбиране го замени с този, който използва конзолата NetBeans.). е необходимо, за да стартирате програмата, ще бъде нещо като:

На пръв поглед това изглежда да е начин да се управлява сложна. Но обикновено, за да започнете "сериозна" програмиране в Java винаги използва някоя партида файл. Какво пречи да добавите ключ към него?

И не забравяйте конзолата в Windows може да бъде във всеки кодиране! Например, някои програми, като reg.exe. могат да работят с конзолата само в Windows-1251. Способността да се покаже във всеки кодиране може да бъде полезно.

Ако вече сте започнали да говорим за пакетни файлове, тогава има по-лесен начин, макар и не толкова мощен. Можете просто да промените кодирането на конзолата вдясно преди стартирането на програмата:

Това са номерата на Windows кодови страници, които могат да бъдат полезни:

  • 866 - cp866
  • 1251 - прозорци-1251
  • 65001 - UTF-8 кодиране
  • 1200 - двойно-байт кодиране UTF-16

Не забравяйте, че System.in и System.out. като правило, винаги трябва да е в същия набор от символи. Трябва да прочетете оригиналната програма на скенер System.in кодиране cp866 на - и принтера се отпечатва до System.out в кодировка по подразбиране. Това несъответствие - също е източник на грешка. Никога не правя.