Auf meiner Seite erscheinen oft Dinge wie ë, Ã, ì, ù, à anstelle von normalen Zeichen.
Ich verwende utf8 für die Kopfseite und die MySQL-Kodierung. Wie kann das passieren?
Dies sind utf-8 kodierte Zeichen. Verwenden Sie utf8_decode(), um sie in normale ISO-8859-1-Zeichen umzuwandeln.
Wenn Sie diese Zeichen sehen, haben Sie wahrscheinlich die Zeichenkodierung nicht richtig angegeben. Denn diese Zeichen sind das Ergebnis, wenn eine UTF-8-Multibyte-Zeichenkette mit einer Einzelbyte-Kodierung wie ISO 8859-1 oder Windows-1252 interpretiert wird.
In diesem Fall könnte ë
mit 0xC3 0xAB kodiert werden, was dem Unicode-Zeichen ë
(U+00EB) in UTF-8 entspricht.
Auch wenn utf8_decode
eine nützliche Lösung ist, ziehe ich es vor, die Kodierungsfehler in der Tabelle selbst zu korrigieren. Meiner Meinung nach ist es besser, die fehlerhaften Zeichen selbst zu korrigieren, als "hacks" im Code zu machen. Führen Sie einfach ein replace
für das Feld in der Tabelle durch. Um die schlechten kodierten Zeichen aus OP zu korrigieren:
update <table> set <field> = replace(<field>, "ë", "ë")
update <table> set <field> = replace(<field>, "Ã", "à")
update <table> set <field> = replace(<field>, "ì", "ì")
update <table> set <field> = replace(<field>, "ù", "ù")
Wobei <table>
der Name der mysql-Tabelle und <field>
der Name der Spalte in der Tabelle ist. Hier ist eine sehr gute Checkliste für diese typischerweise schlecht kodierten Windows-1252 zu UTF-8 Zeichen -> Debugging Chart Mapping Windows-1252 Characters to UTF-8 Bytes to Latin-1 Characters.
Vergessen Sie nicht, Ihre Tabelle zu sichern, bevor Sie versuchen, irgendwelche Zeichen durch SQL zu ersetzen!
[Ich weiß, dass dies eine Antwort auf eine sehr alte Frage ist, aber ich stand wieder einmal vor diesem Problem. Auf einem alten Windows-Rechner wurde der Text nicht korrekt kodiert, bevor er in die Tabelle utf8_general_ci collated eingefügt wurde*].