exception J2ME Midlet: IOException lecteur de lecture invalide premier octet
Question
Quand je lance mon midlet Java Wireless Toolkit, midlet exécute correctement, mais quand il essaie d'analyser un champ de texte, l'erreur suivante se produit;
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)
Quel est le problème?
J'utilise JWT 2.5.2_01
La solution
Problème résolu.
Comme mentionné précédemment McDowell, problème était sur les paramètres d'encodage. La meilleure façon de résoudre ce problème est de déclaration du codage d'informations WTK.
Dans votre répertoire de travail, de trouver le fichier ktools.properties ( 'workdir \ wtklib \ ktools.properties' ou 'workdir \ wtklib \ Linux \ ktools.properties' comme il est sur ma machine). Et ajoutez les lignes suivantes:
microedition.encoding= *encoding*
Pour le codage ASCII:
microedition.encoding=ISO8859_1
qui fera le travail (:
Autres conseils
Je suppose que c'est parce que vous êtes soit:
- en utilisant le constructeur de
String(byte[])
(ce constructeur doit généralement être évité) - en utilisant le constructeur
String(byte[], String)
incorrectement
Dans les deux cas, vous seriez données octet décodage aux données de caractères en utilisant le mauvais codage, un codage où la valeur d'octet 10010111
est illégale (au moins, en tant que premier octet).
Toute conversion de données byte
aux données char
(telles que la création d'une chaîne) impliquera la transformation des données de « un autre encodage » UTF-16. Vous devez savoir et préciser ce que « un autre encodage » est avant d'effectuer cette transformation.