Pergunta

Quando corro meu meio com o Java Wireless Toolkit, o Midlet funciona corretamente, mas quando ele tenta analisar um campo de texto, ocorre o erro seguinte;

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 é o problema?

Estou usando o JWT 2.5.2_01

Foi útil?

Solução

Problema resolvido.

Como McDowell mencionou antes, o problema era sobre codificar configurações. A melhor maneira de superar esse problema é declarar informações de codificação do WTK.

No seu diretório de trabalho, encontre o arquivo Ktools.Properties ('Workdir wtklib ktools.properties' ou 'workdir wtklib linux ktools.properties', como está na minha máquina). E adicione as seguintes linhas:

microedition.encoding= *encoding*

Para codificação ASCII:

microedition.encoding=ISO8859_1

Isso fará o trabalho (:

Outras dicas

Eu acho que é porque você é:

  • usando o String(byte[]) construtor (esse construtor geralmente deve ser evitado)
  • usando o String(byte[], String) construtor incorretamente

Nos dois casos, você estaria decodificando dados de bytes para os dados de caracteres usando a codificação errada, uma codificação onde o valor do byte 10010111 é ilegal (pelo menos, como primeiro byte).

Qualquer conversão de byte dados para char dados (como a criação de uma string) envolverão a transformação de dados de "Alguma outra codificação" para UTF-16. Você precisa saber e especificar o que isso "Alguma outra codificação" é antes de realizar essa transformação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top