Konvertierung, von byte nach char mit Umlatuen

takidoso

Erfahrenes Mitglied
Halli und Hallo,
ich habe ein problem mit einer Konvertierung

folgendes code Fragment ist hier verwendet worden

Code:
for (int i = 0; null != this.field && i < this.field.length; i++)
{
   b.append((char) this.field[i]);
}

das geht auch ganz toll solange man keine Umlaute hat.
Bei dem Zeichen 'Ö' zum Beispiel klappt es nicht, wobei Hex maäßig 'Ö' D3 ist also eine negative Zahl. Ich nehme an, dass darin der Hase im Pfeffer liegt Wie kann man ohne ein solches Problem konvertieren?

um Tips bin ich sehr dankbar

Takidoso
 
Hallo!

Also folgendes funktioniert einwandfrei:
Code:
/**
 * 
 */
package de.tutorials;

/**
 * @author daritho
 * 
 */
public class CharTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        short[] chars = { 't', 'ü', 't', 'Ö', 'r', 'i', 'a', 'l', 's' };

        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < chars.length; i++) {
            buffer.append((char) chars[i]);
        }
        System.out.println(buffer);

    }
}

Speicherst du die char Werte eventuell in einem byte[] ab? chars unter Java sind standardmaessig 2 bytes breit. Wenn du ein byte[] verwendest kannst du nur alle Zeichen mit einem Asciiwert <127 abbilden.

Gruss Tom
 
Hallo Tom,
da hast Du recht, genau das passiert, es wird mit byte[] gearbeitet.
ich habe da auch schon eine nette Lösung gefunden, und zwar anstelle der Schleife mit Konvertierung auf char, bietet sich der String Konstructor new String(byte[]) an, da dieser dann richtig konvertiert.

Danke für Deine Hilfe

Takidoso
 
takidoso hat gesagt.:
Hallo Tom,
da hast Du recht, genau das passiert, es wird mit byte[] gearbeitet.
ich habe da auch schon eine nette Lösung gefunden, und zwar anstelle der Schleife mit Konvertierung auf char, bietet sich der String Konstructor new String(byte[]) an, da dieser dann richtig konvertiert.

Danke für Deine Hilfe

Takidoso

Wobei du dann natuerlich aufpassen musst, dass der String aus dem das byte Array erzeugt wurde auch das selbe Character Encoding hat wie der String den du aus dem byte[] erzeugst...
 
Zurück