eccezione J2ME Midlet: IOException lettore lettura valida primo byte
Domanda
Quando eseguo il mio midlet con toolkit Java Wireless, midlet viene eseguito correttamente, ma quando si tenta di analizzare un campo di testo, si verifica errore seguente;
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)
Qual è il problema?
Sto usando JWT 2.5.2_01
Soluzione
problema risolto.
Come McDowell accennato prima, problema era sulle impostazioni di codifica. Il modo migliore per superare questo problema sta dichiarando codifica informazioni da WTK.
All'interno della vostra directory di lavoro, trovare ktools.properties di file ( 'workdir \ wtklib \ ktools.properties' o 'workdir \ wtklib \ Linux \ ktools.properties' come è sulla mia macchina). E aggiungere le seguenti righe:
microedition.encoding= *encoding*
Per la codifica ASCII:
microedition.encoding=ISO8859_1
che farà il lavoro (:
Altri suggerimenti
direi che è perché siete uno:
- utilizzando il costruttore
String(byte[])
(questo costruttore deve essere generalmente evitato) - utilizzando il costruttore
String(byte[], String)
erroneamente
In entrambi i casi, si sarebbe byte di dati di decodifica ai dati di carattere utilizzando la codifica sbagliata, una codifica in cui il valore del byte 10010111
è illegale (almeno, come primo byte).
Qualunque conversione da dati byte
a char
dati (come la creazione di una stringa) comporterà la trasformazione di dati da "altre codifiche" UTF-16. È necessario conoscere e specificare che cosa "qualche altra codifica" è prima di eseguire questa trasformazione.