J2ME Midlet excepción: la lectura del lector IOException inválido primer byte
Pregunta
Cuando corro mi MIDlet con el conjunto de herramientas Java Wireless, carreras MIDlet correctamente, pero cuando se trata de analizar un campo de texto, se produce el error siguiente;
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)
¿Cuál es el problema?
Estoy utilizando JWT 2.5.2_01
Solución
Problema resuelto.
Como McDowell mencionó antes, el problema era sobre la configuración de codificación. La mejor manera de superar este problema es declarar la codificación de información WTK.
Dentro de su directorio de trabajo, encontrar el archivo ktools.properties ( 'workdir \ wtklib \ ktools.properties' o 'workdir \ wtklib \ Linux \ ktools.properties' al igual que en mi máquina). Y añadir las siguientes líneas:
microedition.encoding= *encoding*
Para la codificación ASCII:
microedition.encoding=ISO8859_1
Esto hará el trabajo (:
Otros consejos
Me imagino que es porque usted es ya sea:
- utilizando el constructor
String(byte[])
(este constructor debe generalmente ser evitado) - utilizando el constructor
String(byte[], String)
incorrectamente
En ambos casos, que sería la decodificación de los datos de bytes de datos de caracteres utilizando la codificación equivocada, una codificación en el que el valor de byte 10010111
es ilegal (por lo menos, como un primer byte).
Cualquier conversión de datos byte
a datos char
(tales como la creación de una cadena) implicará la transformación de datos de "alguna otra codificación" a UTF-16. Es necesario conocer y especificar lo que "alguna otra codificación" es antes de realizar esta transformación.