Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A codificação de caracteres gregos funciona em HTML, mas não em PHP


Mesmo que pareça muito estranho que seus dados mysql sejam emitidos corretamente onde as strings php falham na codificação, a maneira como eu tentaria resolver seu problema seria dividir o problema em etapas tentando identificar onde esse erro de codificação é gerado!

Em primeiro lugar, você deve tentar definir seu default_charset para utf-8 dentro do arquivo php.ini, que é feito assim:
default_charset = "utf-8";

Se você não puder fazer isso devido a restrições do provedor, ainda poderá alterar o valor em tempo de execução usando o ini_set função!

Você também vai querer ter certeza de que o servidor web está configurado para gerar arquivos codificados em utf-8 também! No Apache isso pode ser feito no httpd.conf ou usando arquivos htaccess:
AddDefaultCharset UTF-8

Neste ponto, se tudo falhar, ainda... tente ir com os cabeçalhos php e o conjunto de caracteres html relativo:
<?php header("content-type: text/html;charset=utf-8") ?>
<!doctype>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <?php echo "α β γ δ ε ϝ ϛ ζ η θ ι κ λ μ ν ξ ο π ϟ ϙ ρ σ τ υ φ χ ψ ω ϡ" ?>
    </body>
</html>

É muito importante, porém, que seus arquivos sejam salvos usando uma codificação apropriada também (utf-8 é quase sempre a melhor escolha, ajuda a evitar problemas bastante). Se você salvou arquivos com codificação diferente de utf-8, destrua-os e crie novos a partir do conteúdo antigo. Às vezes, os editores não são realmente capazes de alternar as codificações corretamente depois que o arquivo é criado, embora o notepad++ geralmente faça bem isso; basta usar converto to não o encode in característica!

Se ainda não estiver funcionando, embora eu espere que funcione agora, você pode verificar algumas outras alternativas de php como mb_detect_encoding , mb_convert_encoding , htmlentidades e htmlspecialchars para resolver o problema!