@konstant2in

Java 8 и Java 7. Отличия в работе метода print класса PrintStream. Что почитать по этому вопросу?

Известно, что в java 7, как и в более старых версиях, для того, чтобы System.out.print("Привет") в консоли Windows выдавал русский текст правильно, было необходимо:
1) в операционное системе в качестве языка программ, не поддерживающих Юникод, установить русский язык;
2) в консоли выбрать выбрать "правильный" шрифт и кодировку 1251 (chcp 1251).
Сегодня я обнаружил, что при использовании java 1.8, приведенный выше код правильно отображается как при выставленной в консоли кодировке 866, так и даже если в качестве языка программ, не поддерживающих Юникод, установить не русский язык.
Поиски в интернете изменений в реализации метода print, не дали результата.
Создалось впечатление, что я вообще первооткрыватель этого явления.
Я плохо искал? Буду благодарен за ссылки.
  • Вопрос задан
  • 1153 просмотра
Решения вопроса 1
@Power
В java 7 нет указания кодировки для System.out (и System.err), т.е. используется кодировка по умолчанию (Charset.defaultCharset(), обычно берётся из переменной окружения "file.encoding"): hg.openjdk.java.net/jdk7u/jdk7u/jdk/file/55f6804b4...
В java 8 уже есть указание кодировки (причём конкретно для windows оно пытается соответствовать кодировке консоли): hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/f7a249818...
Изменение: hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/d38fed7d2ea7
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы