出力ストリームが PrintStreamの場合にデフォルトの文字セットを使用しない

この規則により、 java.io.OutputStream を取り、文字セットを持たない以下の Java クラス・コンストラクターにフラグを立てます。

Charset パラメーターを指定せずに OutputStream を取るコンストラクター・シグニチャーは、デフォルトで Charset.defaultCharset() エンコードを使用します。 これにより、ラップする OutputStream が PrintStreamである場合に問題が発生します。これは独自の文字セットを保持し、無視されます。 これは、 PrintWriter が System.out/errをラップする場合に特に問題があります。これは、 JEP400 では、デフォルトの文字セットが UTF-8 になり、標準入出力は native.encodingのままになるためです。

この変更の一部として、 java.io.PrintStream は、印刷ストリームの文字セットを戻す charset () メソッドを定義するようになりました。

詳しくは、 JDK-8276970 を参照してください。