Русификация на конзолата в Windows

При стартиране на програмата в Windows конзолата често има проблем с показването на българските букви. В тази ситуация има две възможни решения - "поправете" конзолата в Windows или "поправете" програмата.

Този проблем възниква, защото кодирането по подразбиране на Windows еwindows-1251, докато конзолата на Windows използва кодиранеCp866. Има 4 различни начина за решаване на този проблем.

Първият вариант е най-предпочитаният и не изисква промяна на кода, така че е подходящ за всяка програма. Стартираме конзолата, кликваме върху заглавието на прозореца и избираме свойства. В свойствата на разделаШрифтзадайте шрифтаLucida Consoleи щракнете върху OK. След това въвеждамеChCp 1251в конзолата, в отговор получавамеТекуща кодова страница: 1251. Сега стартираме програмата Java и се уверяваме, че всичко работи. Ако желаете, можете да напишете bat-файл, където да вмъкнетеChCp 1251и да създадете пряк път за този файл, в свойствата на който можете да зададете шрифтаLucida Console.

Втората опция е да промените кодирането по подразбиране за Java програми. Също така не е необходимо да променяте изходния код на програмата, но са възможни някои странични ефекти. НапримерFileWriterи всички компоненти, които го използват, ще записват файлове не вwindows-1251, а вCp866. Възможно е също да има проблеми с драйверите на базата данни, които по подразбиране се ръководят от системното кодиране. За да промените кодирането по подразбиране за програмите на Java, трябва да посочите JVM параметъра-Dfile.encoding=XXXпри стартиране, както следва:

Третият вариант изисква известна модификация на изходния код, необходимо е да променитеPrintStream, отговорен за изхода към конзолата по време на инициализация на програмата, и да го настроите наCp866кодиране. Удобството на този метод е, че потребителят не трябва да конфигурира нищо. За това в класасъдържащоmain()трябва да бъде написано: