Код Visual Studio: акценты ввода терминала (java.util.Scanner) - PullRequest
0 голосов
/ 23 октября 2019

Я написал очень простую Java-программу и, пытаясь ввести строку с некоторыми акцентами, заметил, что у Сканера (или терминала) есть проблемы для их решения.

Я не знаю, как решитьэта проблема с кодировкой.

Код

    System.out.println("aeíóu"); // output => aeíóu

    Scanner input = new Scanner(System.in, "UTF-8");
    String str = input.nextLine(); // input => aeíóu
    input.close();
    System.out.println(str); // output => ae  u

Выходы (код Visual Studio)

  • Консоль Java Process:

    enter image description here

  • cmd:

    enter image description here

Окружающая среда

  • ОС: Windows 10 Pro
  • JDK: 1.8.0_231
  • Код Visual Studio: 1.39.2

1 Ответ

0 голосов
/ 23 октября 2019

Я не знаю, будет ли это какой-то помощью, прошло много времени с тех пор, как я проверил это в Windows, и если Microsoft исправила проблему или сделала улучшения (или если JVM внесла какие-либо изменения в то, как работает юникодвыводится):

https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/

Проблема заключалась (или остается?) в том, что консоль Windows не может надежно использоваться для ввода и вывода Unicode из приложений, использующих стандартную библиотеку C(байт) функции ввода / вывода. Это включает и Java. Кодовая страница 65001 была взломана.

Не уверен, что приведенный выше пост может указать вам правильное направление.

...