J2ME Midlet Ausnahme: IOException Lese Leser ungültig ersten Byte
Frage
Wenn ich betreiben meine midlet mit Java Wireless Toolkit, midlet läuft richtig, aber wenn es versucht, ein Textfeld zu analysieren, folgende Fehler auftreten;
java.lang.RuntimeException: IOException reading reader invalid first byte 10010111
at com.sun.cldc.i18n.Helper.byteToCharArray(+228)
at com.sun.cldc.i18n.Helper.byteToCharArray(+9)
at java.lang.String.<init>(+7)
at z.a(+219)
at z.a(+103)
at DP4JPhone.a(+74)
at DP4JPhone.a(+115)
at DP4JPhone.commandAction(+120)
at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)
Was ist das Problem?
Ich bin mit JWT 2.5.2_01
Lösung
gelöstes Problem.
Wie McDowell erwähnt vor, Problem zu kodieren Einstellungen war. Der beste Weg, dieses Problem zu überwinden bekannt, dass folgende kodieren Informationen von WTK.
Im Arbeitsverzeichnis finden ktools.properties-Datei ( 'workdir \ wtklib \ ktools.properties' oder 'workdir \ wtklib \ Linux \ ktools.properties' wie auf meinem Rechner). Und fügen Sie die folgenden Zeilen:
microedition.encoding= *encoding*
Für ASCII-Kodierung:
microedition.encoding=ISO8859_1
Das wird die Arbeit tun (:
Andere Tipps
Ich würde vermuten, dass es ist, weil Sie entweder:
- mit dem
String(byte[])
Konstruktor (dieser Konstruktor sollten generell vermieden werden) - mit dem
String(byte[], String)
Konstruktor falsch
In beiden Fällen würden Sie Byte-Daten in Zeichendaten werden decodiert die falsche Codierung, eine Codierung, wo die Byte-Wert 10010111
illegal ist (zumindest als erstes Byte).
Jede Umwandlung von byte
Daten zu char
Daten (wie zum Beispiel der Schaffung eines String) wird die Umwandlung von Daten von beinhaltet „eine andere Codierung“ in UTF-16. Sie müssen wissen, und geben Sie, was das „einige andere Codierung“ ist vor dieser Transformation durchgeführt wird.