避免在输出流为 PrintStream时使用缺省字符集

此规则会标记以下采用 java.io.OutputStream 且没有字符集的 Java 类构造函数:

采用不带 Charset 参数的 OutputStream 的构造函数特征符缺省为使用 Charset.defaultCharset() 编码。 如果要合并的 OutputStream 是 PrintStream(它保存自己的字符集) ,那么这会导致问题,从而导致忽略该字符集。 当 PrintWriter 包装 System.out/err时,这尤其有问题,因为使用 JEP400 时,缺省字符集现在为 UTF-8 ,而标准 I/O 保留在 native.encoding中。

作为此更改的一部分, java.io.PrintStream 现在定义了 charset () 方法以返回打印流的字符集。

有关更多信息,请参阅 JDK-8276970