O Problema da Transliteração
Você inseriu "João" no sistema, mas no banco aparece "João". Este erro ocorre devido ao descasamento entre o Charset da Conexão e o Charset da Coluna no banco de dados.
A Regra de Ouro
O Firebird realiza a conversão automática (transliteração) se você informar ao driver de conexão qual conjunto de caracteres está usando na aplicação.
Exemplo de cenário comum:
- Banco criado com
WIN1252. - Aplicação Delphi/Lazarus conectando com Charset
NONE. - Resultado: O motor não sabe converter e salva os bytes brutos, causando a "salada" de caracteres.
Como Corrigir
Sempre defina explicitamente o parâmetro de conexão LC_CTYPE ou CharSet no seu componente de acesso (Zeos, FireDAC, etc) para corresponder ao charset do banco ou para UTF8 em aplicações modernas.
Conclusão
Problemas de acentuação não são "erros do banco", mas sim falhas de configuração na comunicação. Padronizar o ambiente para UTF8 em todas as pontas é a solução definitiva para sistemas globais.