las ich von einem TCP/IP-Socket-s:Java Byte zu Char Umwandlung
byte[] bbuf = new byte[30];
s.getInputStream().read(bbuf);
for (int i = 0; i < bbuf.length; i++)
{
System.out.println(Integer.toHexString((int) (bbuf[i] & 0xff)));
}
Diese CA 68 9F 75 Ausgänge, die, was ich erwarten würde. Jetzt möchte ich Zeichen verwenden, anstatt
char[] cbuf = new char[30];
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (int i = 0; i < cbuf.length; i++)
{
System.out.println(Integer.toHexString((int) (cbuf[i])));
}
die Ausgabe jetzt ist CA 68 178 75. So das dritte Byte (und nur das dritte Byte) macht den Unterschied. Ich nehme an, dass es mit den Zeichensätzen zu tun hat und dass ich im InputStreamer einen Zeichensatz angeben muss. Ich habe keine Ahnung, wie ich herausfinden soll, welchen Zeichensatz ich verwenden muss. Zweitens bin ich überrascht, wenn es aufgrund von Zeichensätzen ist, dass ich nur das Chaos mit genau einem Charakter bekomme. Ich habe alle möglichen anderen Charaktere ausprobiert, aber das scheint die einzige zu sein, die ich finden konnte.
Wer kann das Geheimnis lösen?
Sie müssen weiß, wie die Charaktere codiert wurden. Ich würde 'UTF-8' anstelle der Standardcodierung verwenden, um damit zu beginnen. –