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

Sandro Souza escovadordebits em gmail.com
Qui Mar 15 16:36:17 -03 2012


Bom dia/tarde Eduardo.

Nobre amigo, posso até estar falando besteira, mas acredito que só precise
informar, na página em ASP, a codificação correta de caracteres, como por
exemplo, dentro da tag <head> a seguinte tag <meta>:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

O problema não é como o Firebird salva o conteúdo dos campos BLOBs, mas sim
como o ASP.NET está enviando esses dados ao Firebird.

No meu caso, eu sempre crio as minhas bases com o character set ISO8859-1 e
todos os campos alfanuméricos com o collate PT_BR.

Nos parâmetros de conexão com a base (tanto no Delphi quanto no PHP) eu
também informo esse mesmo character set, e nas páginas PHPs que fiz, também
coloco essa mesma tag de "meta" que eu cite acima, e tudo funciona
redondamente redondo.

Tanto faz eu salvar na aplicação feita em Delphi como salvar nas páginas em
PHP. Os dois lados vêem tudo tranquilamente sem caracteres em dialetos
alienígenas. :D

Portanto, não é um problema relativo ao Firebird, mas sim relativo a
codificação de caracteres que o ASP.NET usa no envio dos dados ao Firebird.

Infelizmente, não brinco ainda com ASP.NET, então não poderei lhe ajudar
muito nessa questão.

Espero ter ajudado mais que atrapalhado. :D

Em 15 de março de 2012 14:51, Eduardo Pelizzari de Andrade <
eduardoandrade em persoft.com.br> escreveu:

> 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
>
>
> ______________________________**________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/**artigo.php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



Mais detalhes sobre a lista de discussão lista