echo $begrüßung;
ich habe folgendes Problem: ich habe in einer MySQL-Datenbank altgriechische Wörter abgespeichert.
Es ist egal, was du für Zeichen gespeichert hast, Hauptsache du hast dafür eine passende Kodierung verwendet.
Wenn ich die nun als HTML-Seite ausgeben will, werden die nur als Fragezeichen dargestellt.
Dann hast du irgendwo einen Zwischenschritt (aktuell oder bereits in der Vergangenheit nicht beachtet), der nicht die richtige Kodierung verwendet.
Ich habe es schon mit
header("<meta http-equiv="Content-Type" content="text/html; charset=UTF-8");
versucht, aber das bringt auch nichts.
Bei Zeichenkodierungen sollte man nicht blind versuchen und sich auf ein zufällig passendes Ergebnis verlassen. Wichtig ist hier das Verstehen des gesamten Vorgangs, sonst hast du nur wieder Lücken im System. Außerdem hat eine Angabe in den HTTP-Headern stets Vorrang vor einer Meta-Angabe.
Bei der Tabelle steht im phpMyAdmin
utf8_unicode_ci
Diese Angabe ist weniger interessant. Wie sind die Felder kodiert?
bei den einzelnen Variablen der Tabelle habe ich nichts angegeben.
Dann sind dafür also die Werte aus dem Tabelleneintrag verwendet worden. Kontrolliere das bitte mit phpMyAdmin oder einer anderen geeigneten Auflistung der Tabellenkonfiguration (CREATE-Statement anzeigen lassen).
Sind die Daten in der DB richtig kodiert oder schon beim Eintragen kaputtgegangen? Zeigt der phpMyAdmin die Daten richtig an, kann man davon ausgehen, das die Daten in Ordnung sind.
Kann mir da jemand weiterhelfen?
Wie so oft (im Archiv nachzulesen) vermute ich auch hier, dss du keine Angaben zur Kodierung machst, die auf der aktuellen Verbindung zwischen Server und Client zu verwenden ist. Der Server nimmt dann seine Default-Kodierung, und das wird latin1 sein.
Eine gängige Lösung des Problems ist bereits auf der Startseite zum MySQL-Handbuch-Kapitel Character Set Support angegeben.
echo "$verabschiedung $name";