Lesen UTF8 Strings von einem Server über HTTP mit MIDP
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.
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");