Как правильно сканировать стандартные входные текстовые данные? - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь отсканировать текстовые данные из стандартного ввода. Однако кодирование не работает должным образом. Например, если я предоставлю следующие символы:

óś

Вот что я получу:

data: '??'

Код:

public static void main(String[] args) throws InterruptedException, UnknownHostException, IOException {
    Charset ENCODING = Charset.forName("UTF-8");
    Scanner in = new Scanner(System.in, ENCODING);

    for (;;) {
        String line = in.nextLine();
        System.out.println("data: '" + line + "'");
    }
}

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Следующая программа работала для меня.

public class Test {

    public static void main(String[] args) throws InterruptedException, Exception {
        Charset ENCODING = Charset.forName("UTF-8");
        Scanner in = new Scanner(System.in, String.valueOf(ENCODING));

        for (;;) {
            String line = in.nextLine();
            System.out.println("data: '" + line + "'");
        }
    }
}
0 голосов
/ 03 февраля 2020

Кодировка cmd или bash должна совпадать с кодировкой java. В какой ОС запускается java? Если вы используете windows, есть некоторые ограничения относительно UTF-8, подробности здесь: { ссылка }

...