Caracter estranho na String?

3 respostas
luciano_castilho

Olá a todos :)

Estou lendo um array de bytes proveniente de um inputStrean de uma porta serial e transformando esse array em uma String.
Até ai vai bem, porém quando vou salvar a String em um arquivo texto, ou mesmo quando visualizo o seu conteúdo via debugger (watch), junto com as infomações corretas aparece um caracter estranho, que inclusive não da para copiar/colar: um "quadradinho" parecido com um marcador ou com um checkbox.
Alguém tem idéia do que esta acontecendo? Um outro detalhe que não consegui entender: se eu mandar a mesma String para o console via System.out.println() os dados saem de forma correta, sem o tal do "quadradinho" !!! :shock:

Segue a rotina, agradeço qualquer ajuda.

byte[] inputBuffer = new byte[512];
char[] resultChars = new char[512];
        
while (inputStream.available() > 0) {
   int numBytes = inputStream.read(inputBuffer);
}
        
// executa uma pequena substituição nos dados,
// recebidos, trocando alguns caracteres de controle
// por:
// * -> indica o início da String;
// # -> indica o fim da String;
// ^ -> indica espaços em branco;
for (int i=0; i<inputBuffer.length; i++) {
   switch (inputBuffer[i]) {
      case 02: resultChars[i] = '*'; break; //STX
      case 03: resultChars[i] = '#'; break; //ETX
      case 32: resultChars[i] = '^'; break; //espaço em branco
      default: resultChars[i] = (char) inputBuffer[i];
    }
}
        
String resultString = new String(resultChars);
System.out.println(ResultString);

3 Respostas

aborges

Isso acontece pq este byte convertido para char nao está gerando um caracter q sua fonte está entendendo … Bytes pode representar muito mais caracteres do que simplismente letras, numeros e caracteres especiais (!@#$% …)

pcalcado

E para ajudar:

http://www.guj.com.br/forum/viewtopic.php?t=11166&start=0&postdays=0&postorder=asc&highlight=encoding

luciano_castilho

Obrigado pela explicação aborges, e aproveitando… alguém sugeriria uma rotina para deletar esses caracteres que não possuem representação na String???

Mui grato.

Criado 13 de maio de 2004
Ultima resposta 13 de mai. de 2004
Respostas 3
Participantes 3