Verwendung des Standardzeichensatzes vermeiden, wenn der Ausgabedatenstrom ein PrintStreamist

Diese Regel markiert die folgenden Java -Klassenkonstruktoren, die einen java.io.OutputStream ohne Zeichensatz verwenden:

Die Konstruktorsignaturen, die OutputStream ohne Zeichensatzparameter verwenden, verwenden standardmäßig die Codierung Charset.defaultCharset() . Dies führt zu einem Problem, wenn es sich bei OutputStream um einen PrintStreamhandelt, der einen eigenen Zeichensatz enthält, was dazu führt, dass er ignoriert wird. Dies ist besonders problematisch, wenn PrintWriter System.out/erreinschließt, da bei JEP400 der Standardzeichensatz jetzt UTF-8 ist, während die Standardein-/-ausgabe in native.encodingverbleibt.

Im Rahmen dieser Änderung definiert java.io.PrintStream jetzt eine charset () -Methode, um den Zeichensatz des Druckdatenstroms zurückzugeben.

Weitere Informationen finden Sie unter JDK-8276970