Hintergrund: Es gibt eine Tabelle, Ereignisse; Diese Tabelle ist mit latin1 formatiert. Die einzelnen Spalten in dieser Tabelle sind auf utf8 eingestellt. Die Kolumne, die wir diskutieren werden, ist "Titel", was eine der utf8-Spalten ist. Die Website ist für utf8 sowohl über Apache als auch über das Meta-Tag eingestellt.php 5.2 + mysql 5.1 zeichencodierung ausgabe
Als Test, wenn ich décor or ©
in das Titelfeld speichern und ausführen
select title, LENGTH(title) as len, CHAR_LENGTH(title) as chlen
from events where length(title) != char_length(title)
Ich werde décor or ©, 12, 10
zurück als Ergebnis erhalten; was erwartet wird, dass die Daten tatsächlich korrekt in meiner utf8-Spalte gespeichert wurden.
Wenn ich jedoch den Titel auf eine Seite zurückgebe, ist es in d�cor or �
manipuliert, was für mich keinen Sinn macht, da, wie bereits erwähnt, die Zeichencodierung auf utf-8 auf der Seite eingestellt ist.
Nicht sicher, ob dieses letzte Detail einen Unterschied macht, aber wenn ich die Seite bearbeite und den verstümmelten Text erneut übersetze, wird es in d%uFFFDcor or %uFFFD
sowohl in der Datenbank als auch auf der Seite angezeigt. Weitere Eingaben bewirken keine Änderung.
Aktuelle Frage: Hat jemand eine Idee, was ich falsch machen könnte? :-P
nicht 2 sein kann, sonst würde es 2 aus Zeichen anstelle von 1 Ersetzungszeichen –
@Ignacio. Guter Punkt ... werde ich entsprechend bearbeiten – ircmaxell
Ich habe versucht, die bereitgestellten Abfragen in meinem Bootstrap-Prozess direkt nach dem Öffnen der Datenbankverbindung auszuführen, die Ergebnisse des Speicherns in der Datenbank sind jetzt: 'd? Cor oder?'und ich habe var_dump'd die Ergebnisse aus der db bevor alles andere ausgeführt werden konnte und es gibt keinen Unterschied. Danke für die Hilfe bis jetzt. :) – jdsmith2816