J2ME ミッドレット例外:IOException 読み取りリーダーが無効な最初のバイトです

StackOverflow https://stackoverflow.com/questions/2133091

  •  22-09-2019
  •  | 
  •  

質問

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に変換します。それが何なのかを知り、特定する必要があります 「他のエンコーディング」 この変換を実行する前です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top