Char-Encoding mit Java
Grundsätzlich:
- Eine Applikation sollte immer bewußt ein Format schreiben, und dies konfigurierbar machen [stackoverflow]
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
[Encoding conversion in java]
Der Arbeitszeichensatz ist also Unicode. Der Decoder liest also einen bytestring ein, der Encoder schreibt explizit den Strom.
Rudolf Weber