Migrei um projeto com mais de 200 aplicações, da versão SC 9.7.018 (Linux + PHP: 7.3.9 + Apache/2.4.39) para a versão SC 9.11.013 (Linux + PHP: 8.1.6, + Apache/2.4.41) e muitas aplicações estão apresentando problemas com caracteres acentuados (�), apesar de estarem configuradas para o charset Unicode (UTF-8), assim como o banco de dados. Tentei várias configurações no projeto, no PHP e no Apache, mas nada resolveu. O curioso é que, quando mando executar o projeto a partir do SC, tudo funciona perfeitamente, mas se fecho o SC e rodo a aplicação direto no browser (no mesmo servidor), os problemas com o charset aparecem. O que falta configurar? Alguém pode me dar uma luz? Grato.
Verifique nas propriedades do projeto na aba localizações qual o charset definido para o idioma padrão.
e na Edição do projeto, experimente setar a Conversão do charset pelo banco de dados
Ou ainda:
Verifique e compare os arquivos php.ini de cada versão instalada do php.
Geralmente para forçar UTF-8 deve estar assim:
php.ini -------- default_charset = "utf-8" mbstring.internal_encoding=utf-8 mbstring.http_output=UTF-8 mbstring.encoding_translation=On mbstring.func_overload=6
Script para testar qual chaset o php está usando:
<?php // Obtém o valor da diretiva default_charset do php.ini $defaultCharset = ini_get('default_charset'); // Exibe o valor da diretiva echo "O valor da diretiva default_charset é: " . $defaultCharset; ?>
Kleber, obrigado pelas dicas. Foram muito úteis!
Consegui contornar o problema configurando a opção “Conversão do charset pelo banco de dados” para “Sim”. Não entendi por que isso é necessário, já que as aplicações e o banco de dados estão configurados como UTF-8, mas está funcionando.
Eu até já tinha alterado essa configuração antes, enquanto tentava identificar o problema, mas não me toquei que é preciso gerar as aplicações novamente para que a configuração tenha efeito, então achei que não resolveria o problema.
Vlw!
Tem o charset e o collation, que não é a mesma coisa.
As vezes essa correção é necessária pois o charset pode ser o mesmo mas o collation não.