[firebase-br] [off-topic] Asp.net x firebird 1.5 x blob x Delphi

Eduardo Pelizzari de Andrade eduardoandrade em persoft.com.br
Qui Mar 15 14:51:57 -03 2012


Tenho um software em Delphi 7 que acessa a base firebird 1.5 via dbexpress.

Em determinada janela desta aplicação existe a edição de um DBMemo que é 
salvo em um campo blob no banco de dados.

Um novo módulo está sendo desenvolvido em asp.net e em um formulário na 
web vai haver um campo <asp:text> (que no browse, será um textarea para 
quem não é familiarizado com aspnet), onde usuário irá editar o mesmo 
campo blob editado no DBMemo na aplicação Delphi, citado a pouco.

O problema está nos textos com acentuação. Se o usuário digita um texto 
com acentuação no DBMemo, quando ele for consultado, tanto no formulário 
Delphi quanto na página ASP.NET, ele será apresentado corretamente. Mas 
se o usuário informar um texto acentuado na página da Internet, eu 
recupero elas corretamente na página web, mas no DBMemo do Delphi os 
acentos vem com caracters estranhos.

Alguém tem uma luz? Se me indicassem artigos de como o firebird grava os 
blobs já ajudaria. Fiz trabalhos com MS SqlServer usando campo image e 
consegui fazer funcionar usando utf8 e na página web informando o 
"charset=windows1252", mas no firebird não estou conseguindo.

Para recuperar os dados no asp.net estou carregando o conteúdo de uma 
query em System.Data.DataTable.

Pare recuperar o campo blob utilizo a função abaixo:

         virtual public string GetStringdeImagem(string Coluna)
         {
             string retorno = "";
             if (Dados.Rows[Linha][Coluna] == DBNull.Value)
             {
                 retorno = "";
             }
             else
             {
                 byte[] Imagem = new 
byte[Dados.Rows[Linha][Coluna].ToString().Length];
                 Imagem = (byte[])Dados.Rows[Linha][Coluna];
                 retorno = System.Text.Encoding.UTF7.GetString(Imagem);
             }

             return retorno;
         }

E ai em algum lugar do código vai ter algo assim:

      TextBoxMeuCampoBlob.Text = GetString("MeuCampoBlob");

Para salvar o conteúdo do campo editado pelo usuário uso a função abaixo:

         virtual public void SetStringdeImagem(string Coluna,string Valor)
         {
             byte[] Imagem = new byte[Valor.Length];
             Imagem = System.Text.Encoding.UTF7.GetBytes(Valor);
             Dados.Rows[Linha][Coluna] = Imagem;
         }

E em algum lugar do código, alguma coisa assim:

     Cliente.StrStingdeImagem("MeuCampoBlob", TextBoxMeuCampoBlob.Text);

Agradeço atenção

-- 
Eduardo Pelizzari de Andrade
Persoft Software Aplicativos





Mais detalhes sobre a lista de discussão lista