[firebase-br] Diferença de tamanhop de campo com utf8 x utf16

Eduardo Jedliczka edujed em gmail.com
Qua Dez 8 23:10:28 -03 2010


Quando o Delphi manda os dados para o Firebird, é realizada uma conversão de
tipo pelo FbClient.Dll.

Os dados SEMPRE serão gravados pelo CharSet/Collate do Firebird, e ao
retornar, serão convertidos para o padrão do Delphi. Isto é totalmente
Transparente.

Mas preste atenção:

  1º) UTF16 além de maior (exigindo entre 2 e 5 bytes por caracter), suporta
vários caracteres não-existentes no ISO 8859-1 ou no UTF8. Mas todos os
caracteres existentes nos dois últimos existem no UTF16.

  2º) O banco irá "desprezar" ou "converter errôneamente" caracteres
não-suportados pelo charset/collate ao armazenar os dados.

  3º) Por ser multi-byte, é desaconselhável utilizar o UTF8 dentro do banco
de dados, pois é extremamente lento.

Ou seja, recomenda-se utilizar um charset adequado para o idioma dos dados
que estarão gravados no banco (evita-se erros de conversão, e ainda ganha-se
desempenho).

Por exemplo: Se o sistema será utilizado no Brasil, com dados em português,
seria melhor utilizar  o ISO 8859-1 (latin America) ou o Win1252  juntamente
com o collate PT-BR.

Abraço
==========================
Eduardo Jedliczka
Apucarana - Pr
==========================


Em 7 de dezembro de 2010 16:09, Luis Rocha <luis em hw.ind.br> escreveu:

> Estou estudando a migração do código de um sistema para o D2010 usando
> Firebird 2.5 e estou tentando compreendendo uma coisa (dentre as várias
> questões):
>
> Se o Delphi sempre trata as variáveis String como UTF16 e o Firebird
> armazena em UTF8, e considerando que o tamanho do 1o formato, em bytes, é
> maior que o do 2o, pergunta:
> - Eu ignoro esta diferença ao projetar a base, ou seja, uma cadeia de 30
> caracteres em UTF16 no Delphi é armazenada sem perda num campo de tabela
> Firebird VarChar[30]?
> - Delphi e Firebird se entendem quanto a isto ou devo prever a diferença ao
> projetar a base?
> - Ou sou eu que não estou entendendo bem a diferença entre os 2 formatos?
> (e convenhamos, esse Unicode dá uma boa canseira nos miolos)
>
> Obrigado pela ajuda.
> Abraços,
> Luis Rocha
>
>
> ______________________________________________
> 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
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista