Top.Mail.Ru
Ответы

Как сделать так, чтобы в консоле выводились русские буквы?

Если я пишу например такой код

import java.util.Scanner;

public class Test{

Scanner sc = new Scanner(System.in);

public static void main(String[] args){
res();
}

public void res(){
String result = sc.nextLine();
System.out.println(result);
}

}
Выводится не то, что я ввёл. Посоветуйте кодировку, чтобы это исправить

По дате
По рейтингу
Аватар пользователя
Новичок
6лет

Как уже написали выше, код не рабочий.
Проблема с кодировками не имеет простого решения, поскольку в Windows используется несколько кодировок одновременно, и в Java для Windows эта проблема не решена на системном уровне. Если ничего не менять, программа правильно работает при запуске из Eclipse (там своя консоль). Чтоб работало в консольном окне Windows, надо делать так:
Scanner sc = new Scanner(System.in, "cp866");
Чтоб работало везде, программа каким-то образом должна получать параметр: какую кодировку следует использовать (или использовать кодировку по умолчанию, если параметр не задан).

Другой способ.
В настройках консоли выбрать TrueType шрифт (это любой, кроме точечного)
Ввести команду:
chcp 1251
После этих манипуляций Java программа будет работать без указания кодировки (только в этом окне консоли).

Аватар пользователя
Ученик

javac -encoding utf-8 Hello.java
java Hello
Вывод в Console:
Hello World!
Ява правит интернетом!

Аватар пользователя
Мыслитель
6лет

файлик в кодировке UTF-8
...
public class Test {
public static void main(String[] args) {
System.out.println("DEFAULT CHARSET IS: " + Charset.defaultCharset());
System.out.println("ОсЁл ЭтО ИшАк");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println(s);
}
}
javac -cp . -encoding UTF8 Test.java
java -cp . -Dfile.encoding=Cp866 Test

DEFAULT CHARSET IS: IBM866
ОсЁл ЭтО ИшАк
АяЯаИиШш
АяЯаИиШш

Аватар пользователя
Искусственный Интеллект
6лет

Помимо кодировки убедись, что в самой консоли выставлен шрифт, поддерживающий русские символы. В настройках консоли (правой кнопкой).

Аватар пользователя
Искусственный Интеллект
6лет

Такой код кроме ошибки вообще ничего выводить не должен )