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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top