Dies ist ein Zeichensatzproblem. Als solches kann es auf vielen verschiedenen Ebenen schief gegangen sein, aber höchstwahrscheinlich sind die Zeichenfolgen in Ihrer Datenbank utf-8-codiert und Sie präsentieren sie als iso-8859-1. Oder umgekehrt.
Der richtige Weg, um dieses Problem zu beheben, besteht darin, Ihre Zeichensätze zu korrigieren. Die einfachste Strategie, da Sie PHP verwenden, ist die Verwendung von ISO-8859-1 in Ihrer gesamten Anwendung. Dazu müssen Sie Folgendes sicherstellen:
- Alle PHP-Quelldateien werden als ISO-8859-1 gespeichert (nicht zu verwechseln mit CP-1252).
- Ihr Webserver ist für die Bereitstellung von Dateien konfiguriert
charset=iso-8859-1
- Alternativ können Sie die Webserver-Einstellungen im PHP-Dokument mit überschreiben
header
.
- Darüber hinaus Sie können einen Meta-Tag in Sie einfügen HTML, dass die gleiche Sache gibt, aber dies nicht unbedingt erforderlich ist.
- Sie können das
accept-charset
Attribut auch für Ihre <form>
Elemente angeben .
- Datenbanktabellen werden mit der Codierung latin1 definiert
- Die Datenbankverbindung zwischen PHP und Datenbank ist auf latin1 eingestellt
Wenn Sie bereits Daten in Ihrer Datenbank haben, sollten Sie sich bewusst sein, dass diese wahrscheinlich bereits durcheinander sind. Wenn Sie sich noch nicht in der Produktionsphase befinden, wischen Sie einfach alles ab und beginnen Sie von vorne. Andernfalls müssen Sie einige Daten bereinigen.
Ein Hinweis zu Meta-Tags, da jeder falsch versteht, was er ist:
Wenn ein Webserver eine Datei (ein HTML-Dokument) bereitstellt, sendet er einige Informationen, die nicht direkt im Browser angezeigt werden. Dies wird als HTTP-Header bezeichnet. Ein solcher Header ist der Content-Type
Header, der den Mimetyp der Datei (z. B. text/html
) sowie die Codierung (auch als Zeichensatz bezeichnet) angibt. Während die meisten Webserver einen Content-Type
Header mit charset
Informationen senden , ist dies optional. Wenn es nicht vorhanden ist, interpretiert der Browser stattdessen alle Meta-Tags mit http-equiv="Content-Type"
. Es ist wichtig zu wissen, dass das Meta-Tag nur interpretiert wird, wenn der Webserver den Header nicht sendet. In der Praxis bedeutet dies, dass es nur verwendet wird, wenn die Seite auf der Festplatte gespeichert und von dort aus geöffnet wird.
Diese Seite enthält eine sehr gute Erklärung dieser Dinge.