Char-Encoding mit Java

Grundsätzlich:

Unterschied zwischen byte und char in Java

byte
8-bit mit Vorzeichen (-128 ... 127) [Primitive Data Types]
char
16 bit Unicode Zeichen '\u0000' ... '\uffff' [Primitive Data Types]

Die genaue Codierung bestimt das Charset

String

ist eine Sequenz von Unicodezeichen [Java]
Klasse java.lang.StringCoding
getBytes von String
str.getBytes(Charset.forName("UTF-8")) [stackoverflow]

Streams

java.io.InputStreamReader mit explizitem Charset
new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.defaultCharset()));
     
oder
     (BufferedReader br = Files.newBufferedReader(path, StandardCharsets.UTF_8))
     
[stackoverflow],
siehe auch myshittyCode

CharsetEncoder und CharsetDecoder

[Encoding conversion in java]

Der Arbeitszeichensatz ist also Unicode. Der Decoder liest also einen bytestring ein, der Encoder schreibt explizit den Strom.


Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber