Здесь есть две потенциальные проблемы:
- Проблема транскодирования во время компиляции - кодировка , используемая вашим компилятором, для чтения исходного файла должна совпадать с той, которую ваш редактор использует для ее сохранения.
- Проблема транскодирования во время выполнения - кодировка, используемая консолью для чтения данных, должна совпадать с той, которую
System.out
кодирует в
Проблемы компиляции можно обойти, используя экранирование Unicode:
"Le r\u00E9sultat est"
"Nom de l'h\u00F4te"
По умолчанию номер 2 всегда неверен в Windows.Для совместимости со старыми программами DOS cmd.exe по умолчанию использует системные кодировки OEM.Это не стандартная кодировка «ANSI», используемая частями системы Windows, которые по-прежнему застряли в кодировках, предшествующих Unicode.
Это можно исправить либо , переключив консольную кодировку на windows-1252:
>chcp 1252
... или путем изменения кодировки, используемой для передачи данных, в кодировку консоли.Самый простой способ сделать это - использовать Console .В отличие от System.out
, System.console()
обнаруживает и использует кодировку консоли.Использование Console
может вызвать проблемы с запуском кода в IDE, но есть действий, которые вы можете сделать с этим .
Я не смог заставить работать UTF-8 с 65001.
Короче говоря, вам необходимо преодолеть решения, принятые для сохранения обратной совместимости.