Charset Unicode (UTF-8) no SC 9.11.013 (Resolvido)

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!

1 Curtida

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.