Pessoal estou precisando muito da ajuda de vcs em uma questão de impressão de caracteres em jsp… estou usando FIREBIRD para ler um campo do tipo “Blob” só que “NÃO IMPRIME CARACTERES ACENTUADOS, IMPRIME INTERROGAÇÃO NO LUGAR DOS ACENTOS”, VEJA:
veja o código:
Blob blob = temp.getBlob("conteudo");
InputStream in = blob.getBinaryStream() ;
byte b = 0;
while (b != -1)
{
b = (byte)in.read();
out.print((char)b);
}
veja o texto impresso:
Mostrar ?cones Pequenos no Menu Iniciar:I Esta op??o determina como os ?cones ser?o exibidos dentro do menu Iniciar.
Aham, onde é que você está mostrando os caracteres acentuados? Se for no console, e você estiver no Windows, use chcp 1251 (ou 1252, não lembro direito qual é o número correto para “Western”) para ver os caracteres acentuados no console.
De qualquer maneira, bytes não são caracteres. Em vez de imprimir um byte de cada vez, tente ler um buffer inteiro, e usar new String(byte[], String) onde o segundo parâmetro é o “encoding”. Não sei se você vai ter de passar “ISO8859-1” ou algum outro encoding, como “UTF-8” - não sei o que o FireBird usa como padrão.
Blob blob = temp.getBlob("conteudo");
InputStream in = blob.getBinaryStream() ;
int tamanho = in.available();
byte[] buf;
if (tamanho > 0) {
buf = new byte[tamanho];
in.read (buf);
in.close();
out.print (new String (buf, "ISO-8859-1"));
// Pode ser que você tenha de usar new String(buf, "UTF-8"),
// não sei qual é o "encoding" dos dados que você guardou no Blob.
}