Evitar la utilización del conjunto de caracteres predeterminado cuando la corriente de salida es una PrintStream

Esta regla señala los siguientes constructores de clase Java que toman un java.io.OutputStream y ningún conjunto de caracteres:

Las firmas de constructor que toman OutputStream sin parámetros Charset utilizan de forma predeterminada la codificación Charset.defaultCharset() . Esto provoca un problema si el OutputStream que se va a envolver es un PrintStream, que contiene su propio juego de caracteres, lo que hace que se ignore. Esto es especialmente problemático cuando PrintWriter envuelve System.out/err, porque con JEP400 , el juego de caracteres predeterminado es ahora UTF-8 mientras que la E/S estándar permanece en native.encoding.

Como parte de este cambio, java.io.PrintStream ahora define un método charset () para devolver el juego de caracteres de la corriente de impresión.

Para obtener más información, consulte JDK-8276970