Кодировка Java (java.util.Scanner)

426
25 июля 2017, 17:33

Приветсвую всех!

Cразу по больному месту пройдусь:

Имеется вот такой простейший вид исходного кода:

import java.util.Scanner;
import java.util.Locale;
import java.io.IOException;
public class App {
    public static void main(String[] args) {
        System.out.println(Locale.getDefault());
        System.out.println(System.getProperty("file.encoding"));
        System.out.println("привет");
        String usrAns = "";
        Scanner in = new Scanner(System.in, "UTF-8");
        while( ! usrAns.equals("exit")) {
            usrAns = in.nextLine();
            System.out.println(usrAns);
        }
        try {
             in.close();
        } catch(Exception e) {
             System.err.println(e.getMessage());
        }
    }
}

Параметры для javac и jvm такие:

javac -encoding UTF-8 *.java
java -Dfile.encoding=UTF-8 App

На моей машине вывод выглядит так:

en_US
UTF-8
привет

Теперь, собственно, сама проблема: При попытке ввести в консоль предложения, написав их на русской раскладке, - выводятся просто символы: ?????

Вот так:

en_US
UTF-8
привет
как проект?
??? ?????
да норм завтра сдача
?? ??? ????? ??

jvm стоит на машине с win10 (лицензия как обновление с 8.1 до 10 ставилась):

  • Host Name: Asus K73SV
  • OS Name: Microsoft Windows 10 Pro
  • OS Version: 10.0.15063 N/A Build 15063
  • OS Manufacturer: Microsoft Corporation

  • System Type: x64-based PC

  • System Locale: en-us;English (United States)

  • Input Locale: en-us;English (United States)
  • Time Zone: (UTC+03:00) Moscow, St. Petersburg, Volgograd

интерфей ОС англоязычный... даже при переходе на рускоязычную локализацию (ru_RU cp1251) проблемы теже...

Что скажете по такому капризному поведению ?

Answer 1

Всё дело в установленной кодовой странице.
Для поддержки русского текста поменяйет страницу для текущей консоли:

chcp 1251

Для поддержки UTF-8:

chcp 65001

Можете выставить в реестре кодовою страницу по умолчанию:

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="chcp 1251"

Unicode characters in Windows command line - how?
How to set default charset in Windows cmd?
Кодовая страница

READ ALSO
fxml файл не видит метод

fxml файл не видит метод

Собственно, вот fxml файл

328
В чем разница в Java между class и public class?

В чем разница в Java между class и public class?

Дело в том, что в материале который я изучаю, когда дошло до модификаторов доступа, то описание коснулось только модификаторов доступа членов...

385