Frage

Ich möchte UTF-8-Zeichenketten von einem Server lesen, dass ich die Kontrolle habe von, Java MIDP verwenden. Mein Server sendet UTF-8-Daten. Der folgende Code erhält der Nähe:

        c = (StreamConnection) Connector.open(
             myServer, Connector.READ_WRITE);
        InputStream is = c.openInputStream();
        StringBuffer sb = new StringBuffer();
        int ch;
        while((ch = is.read()) != -1)
            sb.append((char)ch + "->" + ch + "\n");

Ich drucke die Zeichen und seinen Code zu Debugging-Zwecke. Ich denke, es ASCII Zeichen liest hier, also, wenn ich einige Zeichen, die ihren Code über 127 hat dann bekomme ich zwei Zeichen, wie die beiden Beispiele unten:

Der Buchstabe a. UTF Code E1 (hex). Ich erhalte 195 und dann 161

Brief ô. UTF Code F4 (hex). Ich erhalte 195 und dann 180

Meine Frage ist, gibt es eine Möglichkeit für mich, UTF-Zeichen direkt zu lesen. Ich habe einige Lösungen im Web gefunden, aber keiner passt auf die MIDP.

War es hilfreich?

Lösung

Statt Bytes zu lesen, lesen Zeichen. Verwenden Sie ein Input API Bytes Zeichen konvertiert und durch den UTF-8-Codierer ausgeführt werden. Es sollte als Teil des JavaME CLDC (JSR 30) Profil unterstützt werden; das ist, wo der Link verweist.

Versuchen Sie etwas wie folgt aus:

c = (StreamConnection) Connector.open(
         myServer, Connector.READ_WRITE);
Reader r = new InputStreamReader(c.openInputStream(), "UTF-8");
StringBuffer sb = new StringBuffer();
int ch;
while((ch = r.read()) != -1)
    sb.append((char)ch + "->" + ch + "\n");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top