Caracter estranho na String?

Olá a todos :slight_smile:

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.

[code]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);
[/code]

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 (!@#$% …)

E para ajudar:

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

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.