dedlfix: Problem mit Darstellung Typographischer Anführungszeichen

Beitrag lesen

echo $begrüßung;

Was steht im Quelltext? Was steht bei anderen Browsern im Quelltext?
Im Quelltext zeigt Firefox das gleiche komische Platzhalterzeichen an.
Im Quelltext vom IE7 steht “ bzw. ”

Die Kästchendarstellung im FF 00/93 und 00/94 sowie “ und ” (als Windows-1252 betrachtet) deuten auf falsche Kodierung der Zeichen “ und ” hin. An den Unicode-Position 0093 und 0094 (Hex) befinden sich keine darstellbaren Zeichen. Die von dir gesuchten Zeichen befinden sich an Position 201C und 201D. Du hast schlicht eine falsche Kodierung. Beide Zeichen kommen auch nur in Windows-1252 vor, nicht jedoch in ISO-8859-1.

Die Seite ist in UTF-8 gehalten.
Und die Datenbank? Und die Verbindung dahin? Und die Tabelle?
Ja, die Datenbank ist UTF-8, aber die Tabelle bzw. das Entsprechende Feld latin1_german1_ci.

Latin1 entspricht unter MySQL Windows-1252, ansonsten eigentlich ISO-8859-1. Die Frage nach der Verbindungskodierung hast du ignoriert, die ist wichtig wenn der MySQL-Server und der Client eine gemeinsame Sprache sprechen sollen. Zum Ablegen der Daten ist die Tabellenkodierung uninteressant, nur die Feldkodierung zählt letztlich.

Bisher gabs mit Unicode Zeichen aber nie Probeme, weil MySQL Problemlos UTF8 in dem LATIN1 Feld ablegen 8und auch wieder rauskriegen) konnte.

Dann hast du vermutlich bisher unter Ignorieren der Verbindungskodierung UTF-8-Daten gesendet. Der Default-Wert der Verbindungskodierung wird auf Latin1 gestanden haben, weswegen die Mehrbytesequenzen von UTF-8 als einzelne Latin1-Zeichen interpretiert und abgespeichert wurden. Rückzu liefert MySQL wieder Latin1 aus und du interpretierst das als UTF-8. Dass dabei keine Probleme auftreten ist nur bei oberflächlicher Beobachtung richtig. Schon das Ermitteln von Stringlängen mit der Funktion CHARACTER_LENGTH() ergibt falsche Werte. Auch passen in Felder mit definierter Länge je nach Anzahl und Länge der UTF-8-Sequenzen effektiv entsprechend weniger Zeichen.

Dein Problem wäre auch gar nicht weiter aufgefallen, hätte nicht irgendwas die Zeichen “ und ” in einer falsche UTF-8-Kodierung gebracht. Wer oder was das allerdings war kann ich dir nicht sagen.

echo "$verabschiedung $name";