Pessoal, estou com um probleminha que a 2 dias está me dando uma dor de cabeça pra resolver. Já conversei com a equipe de desenvolvimento e estamos todos procurando e dando ideias pra resolver. Algumas foram implementas, mas não funcionaram. Portanto, vim pedir uma ajuda ao pessoal que frequenta o forum.
É o seguinte. Tenho uma base de dados Firebird 2.1. Um aplicativo, escrito em Delphi, grava dados encriptados num campo blob. Em Java, eu consigo pegar esse campo e colocar ele numa String. Até aí tudo beleza, sem problemas, porque não é um array de bytes nem nada, é só uma string grande com uns caracteres diferentes.
Eu estava debugando no Delphi, e cheguei no seguinte (estou colocando somente um trecho):
No Java, quando pego esses dados (e se vejo no banco usando o IBExpert), chego no seguinte:
Não sei como vai aparecer no forum, mas enfim. Alguns caracteres são espaços, outros são setas, outros são uns caracteres diferentes.
O problema são essas diferenças entre os caracteres. Vejam as diferenças em negrito:
Delphi: 01=o’#$90’YÜp<’#$1A#$1A#$19#$12’À§…
Java : 01=o�YÜp<À§…
Vou pegar o primeiro negrito. No Delphi, aparece da seguinte forma: ‘#$90’. No Java, aparece o ‘?’ dentro do polígono de fundo preto. Vendo o ASCII, Hexadecimal e Octal desse caracter, cheguei no seguinte:
ASCII: 65.533
Hexa: 0xFFFD
Oct: 177775
Cheguei nesse site, que diz que esse caracter existe, de fato, na tabela ASCII e não é um caracter ‘estranho’, é ‘especial’, digamos assim. Agora eu preciso fazer essa conversão, pra chegar onde o Delphi chega. Ou seja, o caracter de Hexa 0xFFFD fica #$90.
Alguém poderia me dizer como o Delphi interpreta isso? Se isso fosse código aberto dava pra debugar até os bits do negócio, mas como não é, tenho que ir na adivinhação. Pelo jeito, o Delphi faz uma conversão (que dicerto só ele entende) entre o hexa, decimal ou octal para algum outro tipo que ele define. Alguém sabe se tem como fazer isso em Java?
Valeu, abraço.