Hallo zusammen!
Ich beschäftige mich nebenbei immer wieder gern mit Java, bin gerade dabei, das I/O System durchzugehen, bin durch Zufall auf diese Frage gekommen.
Folgender Code:
Jetzt fallen natürlich die Umlaute weg, weil Umlaute größer als ein byte sind (in UTF-8/16). Richtig verstanden?
Jetzt wirds spannend
Hier hab ich für die Umlaute 4 bytes in der Console. Wie kann ein byte auf einmal 4 bytes groß sein? Hängt das mit dem Cast nach int zusammen? Aber wenn ich ein byte lese, und dann nach int caste, wirds zwar größer, aber es kann ja nicht auf einmal einen anderen Wert annehmen?
Und generell, wenn ein char 2 bytes groß ist, und die Umlaute 4 bytes lang sind, wie geht sich das dann aus?
Und noch eine Frage: Mein Textfile ist UTF-8. Laut Wiki ist für ein 1-byte-großes Zeichen das höchste bit 0. Bei mir in der Console allerdings nicht. Warum?
Nächster Code:
Jetzt gehts auf einmal. "Reads the next byte of data from this input stream. The value byte is returned as an int in the range 0 to 255". Aber wenn die Umlaute 4 bytes groß sind, er es als ein byte einliest und dann als int zurückgibt...??
Ich blick nicht mehr durch. Hilfe!
Danke!
Liebe Grüße
grisu
Ich beschäftige mich nebenbei immer wieder gern mit Java, bin gerade dabei, das I/O System durchzugehen, bin durch Zufall auf diese Frage gekommen.
Folgender Code:
Java:
DataInputStream dis = new DataInputStream (new FileInputStream (new File ("C:/xampp/htdocs/workspace/javaFiles/poem.txt")));
String s = "";
while (dis.available() != 0)
s += (char) dis.readByte();
System.out.println (s);
Java:
String s = "";
while (dis.available() != 0)
{
byte b = dis.readByte();
System.out.println (Integer.toBinaryString(b));
s += (char) b;
}
Hier hab ich für die Umlaute 4 bytes in der Console. Wie kann ein byte auf einmal 4 bytes groß sein? Hängt das mit dem Cast nach int zusammen? Aber wenn ich ein byte lese, und dann nach int caste, wirds zwar größer, aber es kann ja nicht auf einmal einen anderen Wert annehmen?
Und generell, wenn ein char 2 bytes groß ist, und die Umlaute 4 bytes lang sind, wie geht sich das dann aus?
Und noch eine Frage: Mein Textfile ist UTF-8. Laut Wiki ist für ein 1-byte-großes Zeichen das höchste bit 0. Bei mir in der Console allerdings nicht. Warum?
Nächster Code:
Java:
String s = "";
while (dis.available() != 0)
{
s += (char) dis.read();
}
System.out.println (s);
Ich blick nicht mehr durch. Hilfe!
Danke!
Liebe Grüße
grisu