Не уверен, что это проблема программирования. Я начал подозревать это ... но затем я запустил рассматриваемую Java-программу (исполняемый jar) в консоли Windows вместо Cygwin ... и она работала нормально: выходные акценты в порядке, акцентированный ввод принят нормально. Так что нижеследующее относится только к консоли Cygwin.
Я обрабатываю французский текст. Когда печатаются символы с диакритическими знаками (System.out
), вместо них печатается своего рода «заштрихованное поле». Я видел здесь еще один вопрос об этом, но не было дано никакого решения или правильного объяснения.
И когда я ввожу символы с акцентом, они считываются неправильно (Java System.in
), например. Затем «bénéfice» распечатывается (в журнале, который правильно обрабатывает кодировку) как «bénéfice».
Что озадачивает (возможно), так это то, что я могу ввести «bénéfice» в консоли. Насколько я понимаю, шрифт Deja Vu Sans Mono предназначен для работы с Unicode. Итак... может это как-то связано с потоками Java System.in
и System.out
???
Во избежание сомнений, это Cygwin на платформе Windows (кто-нибудь использует Cygwin на ОС, отличной от Windows?).
Я попытался изменить «Язык», «Набор символов» и «Шрифт», выбрав «Параметры» -> «Текст». Ничто не меняет эти ящики. На данный момент установлены настройки по умолчанию:
Шрифт: Deja Vu Sans Mono
Регион: en_GB
Набор символов: UTF-8
В командной строке, когда я иду
$ locale
я получил
LANG=en_GB.UTF-8
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_ALL=
Кто-нибудь знает, что мне делать?
System.in
? - person ZhongYu   schedule 31.01.2017PrintStream out = new PrintStream(System.out, true, "UTF-8");
. Теперь я пытаюсь понять, как получитьBufferedReader
сделатьreadLine
с правильной кодировкой... - person mike rodent   schedule 31.01.2017BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
. Предположительно, это не использует UTF8. Знаете, как я это решаю? - person mike rodent   schedule 31.01.2017in
, а затем распечатать вout
. - person ZhongYu   schedule 31.01.2017