Mysql
 sql >> Base de données >  >> RDS >> Mysql

L'encodage des caractères grecs fonctionne en HTML mais pas en PHP

Même s'il semble vraiment étrange que vos données mysql soient sorties correctement là où les chaînes php échouent lors de l'encodage, la façon dont j'essaierais de résoudre votre problème serait de décomposer le problème en étapes essayant d'identifier où cette erreur de codage est générée !

Tout d'abord, vous devriez essayer de définir votre default_charset en utf-8 dans le fichier php.ini, qui se fait comme ceci :

default_charset = "utf-8";

Si vous ne pouvez pas le faire en raison des restrictions du fournisseur, vous pouvez toujours modifier la valeur au moment de l'exécution à l'aide de la ini_set fonction !

Vous voudrez également vous assurer que le serveur Web est configuré pour générer également des fichiers encodés en utf-8 ! Dans Apache, cela peut être fait à la fois dans le httpd.conf ou en utilisant des fichiers htaccess :

AddDefaultCharset UTF-8

À ce stade, si tout échoue, toujours... essayez d'utiliser les en-têtes php et le jeu de caractères html relatif :

<?php header("content-type: text/html;charset=utf-8") ?>
<!doctype>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <?php echo "α β γ δ ε ϝ ϛ ζ η θ ι κ λ μ ν ξ ο π ϟ ϙ ρ σ τ υ φ χ ψ ω ϡ" ?>
    </body>
</html>

Il est cependant très important que vos fichiers soient également enregistrés en utilisant un encodage approprié (utf-8 est presque toujours le meilleur choix, cela aide à éviter de nombreux problèmes). Si vous avez enregistré des fichiers avec un encodage différent de utf-8, détruisez-les et créez-en de nouveaux à partir de leur ancien contenu. Parfois, les éditeurs ne sont pas vraiment capables de changer correctement les encodages une fois le fichier créé, même si notepad++ s'en sort généralement bien; utilisez simplement converto to pas le encode in fonctionnalité !

Si cela ne fonctionne toujours pas, même si j'espère que c'est le cas maintenant, vous pouvez consulter d'autres alternatives php comme mb_detect_encoding , mb_convert_encoding , htmlentities et htmlspecialchars afin de résoudre le problème !