Toto pravidlo značí následující konstruktory třídy Java , které přijímají java.io.OutputStream a nemají znakovou sadu:
java.io.PrintStreamjava.io.PrintWriterjava.io.OutputStreamWriter
Podpisy konstruktoru, které používají OutputStream bez parametrů znakové sady, standardně používají kódování Charset.defaultCharset() .
To způsobí problém, pokud je OutputStream , který se má zalamovat, PrintStream, který uchovává svou vlastní znakovou sadu, což vede k ignorování.
To je zvláště problematické, když PrintWriter obtéká System.out/err, protože s JEP400 je nyní výchozí znaková sada UTF-8 , zatímco standardní I/O zůstává v native.encoding.
V rámci této změny nyní java.io.PrintStream definuje metodu charset () pro vrácení znakové sady tiskového proudu.
Další informace viz JDK-8276970