3

Java Wirelessツールキットを使用してmidletを実行すると、midletは正しく実行されますが、テキストフィールドを解析しようとすると、次のエラーが発生します。

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)

何が問題ですか?

JWT2.5.2_01を使用しています

4

2 に答える 2

3

問題が解決しました。

マクダウェルが前に述べたように、問題はエンコーディング設定に関するものでした。この問題を解決する最善の方法は、WTKからエンコーディング情報を宣言することです。

作業ディレクトリ内で、ktools.propertiesファイル(私のマシンでは「workdir \ wtklib\ktools.properties」または「workdir\wtklib \ Linux \ ktools.properties」)を見つけます。そして、次の行を追加します。

microedition.encoding= *encoding*

ASCIIエンコーディングの場合:

microedition.encoding=ISO8859_1

それは仕事をします(:

于 2010-01-26T09:29:36.200 に答える
2

私はあなたがどちらかであるためだと思います:

  • コンストラクターの使用String(byte[])(このコンストラクターは通常回避する必要があります)
  • String(byte[], String)コンストラクターを誤って使用する

どちらの場合も、間違ったエンコーディング、つまりバイト値10010111が不正なエンコーディング(少なくとも最初のバイトとして)を使用して、バイトデータを文字データにデコードすることになります。

データからbyteデータへの変換char(文字列の作成など)には、「他のエンコーディング」からUTF-16へのデータの変換が含まれます。この変換を実行する前に、その「他のエンコーディング」が何であるかを知り、指定する必要があります。

于 2010-01-25T15:21:41.083 に答える