I/O Einsteiger

Von plattformabhängigem Standard-Charset zu explizitem StandardCharsets

Files-Reader und -Writer mit StandardCharsets-Konstanten verwenden, statt sich auf das plattformabhängige Standard-Charset und fehleranfällige Zeichensatznamen zu verlassen.

I/O
✕ Platform-default charset
try (Reader reader = new FileReader(path.toFile())) {
    return readAll(reader);
}
✓ Explicit standard charset
try (BufferedReader reader = Files.newBufferedReader(
        path, StandardCharsets.UTF_8)) {
    return readAll(reader);
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🌍

Portable Ergebnisse

Dieselben Bytes werden auf jeder Maschine identisch dekodiert.

🔒

Vordefinierte Konstante

StandardCharsets.UTF_8 kann keinen falsch geschriebenen Zeichensatznamen enthalten.

🧩

Moderne Datei-API

Path, Pufferung und Kodierung werden in einer Operation ausgedrückt.

Alter Ansatz
Plattformabhängiger Standard-Zeichensatz
Moderner Ansatz
Expliziter Standard-Zeichensatz
Seit JDK
7
Schwierigkeitsgrad
Einsteiger
Von plattformabhängigem Standard-Charset zu explizitem StandardCharsets
Verfügbar

Seit JDK 7 allgemein verfügbar (Juli 2011)

Reader- und Writer-Konstruktoren, die sich auf den Standard-Zeichensatz verlassen, machen das Dateiverhalten von der Laufzeitumgebung abhängig. Files.newBufferedReader() und newBufferedWriter() akzeptieren ein explizites Charset, während StandardCharsets garantierte Konstanten wie UTF_8 ohne String-Suche oder UnsupportedCharsetException bereitstellt.