Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Kodierung griechischer Zeichen funktioniert in HTML, aber nicht in PHP

Auch wenn es wirklich seltsam klingt, dass Ihre MySQL-Daten korrekt ausgegeben werden, wo PHP-Strings beim Codieren fehlschlagen, würde ich versuchen, Ihr Problem zu lösen, indem ich das Problem in Schritte zerlege, um herauszufinden, wo diese Fehlcodierung erzeugt wird!

Zuerst sollten Sie versuchen, Ihren default_charset festzulegen zu utf-8 innerhalb der php.ini-Datei, was so gemacht wird:

default_charset = "utf-8";

Wenn Sie dies aufgrund von Anbieterbeschränkungen nicht tun können, können Sie den Wert möglicherweise zur Laufzeit mit der Funktion ini_set Funktion!

Sie sollten auch sicherstellen, dass der Webserver so eingestellt ist, dass er auch utf-8-codierte Dateien ausgibt! In Apache kann dies sowohl in der httpd.conf als auch über htaccess-Dateien erfolgen:

AddDefaultCharset UTF-8

Wenn an dieser Stelle alles fehlschlägt, versuchen Sie trotzdem, mit PHP-Headern und einem relativen HTML-Zeichensatz zu arbeiten:

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

Es ist jedoch sehr wichtig, dass Ihre Dateien auch mit einer geeigneten Codierung gespeichert werden (utf-8 ist fast immer die bessere Wahl, es hilft sehr, Probleme zu vermeiden). Wenn Sie Dateien mit einer anderen Codierung als utf-8 gespeichert haben, zerstören Sie sie und erstellen Sie neue aus ihrem alten Inhalt. Manchmal sind Editoren nicht wirklich in der Lage, die Kodierung richtig zu wechseln, sobald die Datei erstellt wurde, obwohl Notepad ++ im Allgemeinen gut darin ist; Verwenden Sie einfach converto to nicht das encode in Funktion!

Wenn es immer noch nicht funktioniert, obwohl ich hoffe, dass es jetzt funktioniert, können Sie einige andere PHP-Alternativen ausprobieren, wie mb_detect_encoding , mb_convert_encoding , htmlentities und htmlspecialchars um das Problem zu beheben!