Сложности кодирования Cygwin

Не уверен, что это проблема программирования. Я начал так подозревать... но потом я запустил соответствующую программу 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?).

Я попытался изменить "Locale" и набор символов и шрифт, выбрав Options -> Text. Ничто не меняет эти коробки. На данный момент настройки являются настройками по умолчанию:
Шрифт: 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=

Кто-нибудь знает, что я должен делать?

1 ответ

Решение

Спасибо Полу и Чжун Юй за ответы здесь.

Чтобы распечатать в Cygwin, выполните следующие действия:

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.print( outputString );

Чтобы читать из Cygwin, делайте такие вещи:

BufferedReader br = new BufferedReader( new InputStreamReader(System.in, "UTF-8") );
String nextInputLine = br.readLine();

Немного удивлен тем, что этот вопрос не поднимался раньше, чем Cygwin.

Другие вопросы по тегам