Vyvarovat se použití výchozí znakové sady, když je výstupní proud PrintStream

Toto pravidlo značí následující konstruktory třídy Java , které přijímají java.io.OutputStream a nemají znakovou sadu:

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