J2ME ミッドレット例外:IOException 読み取りリーダーが無効な最初のバイトです
質問
Java Wireless ツールキットを使用してミッドレットを実行すると、ミッドレットは正しく実行されますが、テキストフィールドを解析しようとすると、次のエラーが発生します。
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)
何が問題ですか?
JWT 2.5.2_01を使用しています
解決
問題が解決ます。
マクドウェルは、先に述べたように、は、問題が設定をコードについてでした。この問題を克服するための最良の方法は、WTKからの情報をコード化すると宣言されます。
あなたの作業ディレクトリ内では、(私のマシン上にあるとして 'WORKDIR \ wtklib \ ktools.properties' や 'WORKDIR \ wtklib \ Linuxの\ ktools.properties')ktools.propertiesファイルを見つけます。そして、次の行を追加します:
microedition.encoding= *encoding*
ASCIIエンコーディングについては、
microedition.encoding=ISO8859_1
仕事をすること(:
他のヒント
それはあなたが次のいずれかであるためだと思います。
- を使用して
String(byte[])
コンストラクター (このコンストラクターは通常は避けるべきです) - を使用して
String(byte[], String)
コンストラクターが間違っています
どちらの場合も、間違ったエンコーディング、つまりバイト値が異なるエンコーディングを使用して、バイト データを文字データにデコードすることになります。 10010111
は (少なくとも最初のバイトとしては) 不正です。
からのあらゆる変換 byte
データを char
データ (文字列の作成など) には、からのデータの変換が含まれます。 「他のエンコーディング」 UTF-16に変換します。それが何なのかを知り、特定する必要があります 「他のエンコーディング」 この変換を実行する前です。
所属していません StackOverflow