Избегать использования набора символов по умолчанию, если поток вывода является PrintStream

Это правило помечает следующие конструкторы класса Java , которые принимают java.io.OutputStream и не имеют набора символов:

Сигнатуры конструктора, принимающие OutputStream без параметров Charset по умолчанию, используют кодировку Charset.defaultCharset() . Это приводит к тому, что OutputStream для переноса является PrintStream, в которой хранится собственный набор символов, что приводит к игнорирум. Это особенно проблематично, когда PrintWriter оболочек System.out/err, поскольку с JEP400 , набор символов по умолчанию теперь UTF-8 , в то время как стандартный ввод-вывод остается в native.encoding.

В ходе этого изменения java.io.PrintStream теперь определяет метод charset () для возврата набора символов потока печати.

Дополнительная информация приведена в разделе JDK-8276970