Nervensache
Mitglied
Hallo zusammen,
seit Stunden durchsuche ich schon das Netz nach einer Lösung für mein Problem.
Leider bisher absolut erfolglos. Konvertieren von Strings von UTF-8 nach ISO-8859-1
und vice versa ist an sich ja kein Problem. Ein simples utf = new String(latinBytes, "ISO-8859-1")
genügt um den Text umzuwandeln. Alternatv habe ich es auch schon mit:
probiert.
Scheinbar lässt sich das aber nicht problemlos auf Streams übertragen. Mein Problem ist, dass
mir der Client erst im Header verrät welche Kodierung er vornimmt. Standardmäßig setze ich UTF-8 als
Charset für meinen InputStreamReader. Wenn ich jetzt den Text "täst" übertrage wird das leider von Java als
"t?st" ausgegeben. Wenn ich jetzt probiere das mit obigen Codesnippet zu konvertieren, dann gibt
mir Java als Ergebnis "týst" aus.
Die empfangenen Bytes (im Modus UTF-8) sind hierbei:
116, 65533, 115, 116 bzw 74, fffd, 73, 74
Wenn ich den StreamReader mit dem Charset "ISO-8859-1" erzeuge, wird alles wie gewünscht übertragen.
Das Charset während der Kommunikation zu wechseln scheint leider nicht möglich.
Kennt jemand eine Lösung ?
seit Stunden durchsuche ich schon das Netz nach einer Lösung für mein Problem.
Leider bisher absolut erfolglos. Konvertieren von Strings von UTF-8 nach ISO-8859-1
und vice versa ist an sich ja kein Problem. Ein simples utf = new String(latinBytes, "ISO-8859-1")
genügt um den Text umzuwandeln. Alternatv habe ich es auch schon mit:
Code:
Charset charset = Charset.forName("ISO-8859-1");
CharsetDecoder decoder = charset.newDecoder();
CharsetEncoder encoder = charset.newEncoder();
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(s));
CharBuffer cbuf = decoder.decode(bbuf);
s = s.toString();
Scheinbar lässt sich das aber nicht problemlos auf Streams übertragen. Mein Problem ist, dass
mir der Client erst im Header verrät welche Kodierung er vornimmt. Standardmäßig setze ich UTF-8 als
Charset für meinen InputStreamReader. Wenn ich jetzt den Text "täst" übertrage wird das leider von Java als
"t?st" ausgegeben. Wenn ich jetzt probiere das mit obigen Codesnippet zu konvertieren, dann gibt
mir Java als Ergebnis "týst" aus.
Die empfangenen Bytes (im Modus UTF-8) sind hierbei:
116, 65533, 115, 116 bzw 74, fffd, 73, 74
Wenn ich den StreamReader mit dem Charset "ISO-8859-1" erzeuge, wird alles wie gewünscht übertragen.
Das Charset während der Kommunikation zu wechseln scheint leider nicht möglich.
Kennt jemand eine Lösung ?

Zuletzt bearbeitet: