echo $begrüßung;
- Die Dateien sollten utf-8 encodet sein
Das ist logisch. Wenn man Kodierung X verwenden will, muss man sie auch verwenden, sonst kommt gelegentlich Müll raus. Den muss man nicht sofort merken, weil einige Kodierungen besonders im Bereich von reinem ASCII (Byte-Werte von 0 bis 127) gleich sind. Wichtig ist, dass alle Beteiligten darüber informiert sind, welche Kodierung vorliegt, damit es nicht zu Missinterpretation und Datenverlust kommt.
- An den Anfang der CSS Datei eine "@charset "utf-8";"
Zum 2. Punkt kann ich nur sagen das ich mir die Quelltexte vieler Seiten angeschaut habe, die mit UTF-8 laufen und ich habe diesen Vermerk nie gefunden.
ASCII ist eine Untermenge von UTF-8. Solange keine Nicht-ASCII-Zeichen vorkommen, reicht es, den Text als ASCII auszuzeichnen. Das dürfte in den von dir beobeachteten Fällen der Fall sein. Außerdem wirkt hier ebenfalls die Kodierungsangabe im HTTP-Header vorrangig vor der Angabe in der Datei. Letztere ist vor allem dann nützlich, wenn kein HTTP-Header mehr da ist, z.B. nach einer lokalen Speicherung. Das gilt auch für Punkt 4 und 5.
- Daten aus Datenbanken und aus der url ebenfalls utf-8 encoden oder dafür sorgen dass sie als utf-8 ankommen
Hier ist das DBMS gefordert. Kann es mit UTF-8 umgehen, muss man ihm mitunter noch mitteilen, dass man es auch zu verwenden gedenkt, denn die Standardeinstellung ist das nicht unbedingt. Kann es nicht mit UTF-8 umgehen, kann man es in der Regel trotzdem verwenden. Allerdings darf man dann nicht erwarten, dass es Dinge richtig macht, bei denen es auf die korrekte Interpretaion der Zeichen ankommt (z.B. Sortierung und String-Funktionen).
- In den Seitenmetatags utf-8 angeben "<meta http-equiv="content-type" content="text/html; charset=utf-8">"
- Bei jeder PHP seite am Anfang einen Contenttype Header mitsenden "header("content-type: text/html; charset=UTF-8");"
siehe oben.
- In der php.ini " default_charset = "utf-8" " setzten
Diese Konfiguration bewirkt das gleiche wie Punkt 5. Eins von beiden ist also überflüssig.
- Apache auf utf-8 Ausgabe umstellen
Das ist sicher eine falsche Formulierung. Der Apache ändert nichts am Inhalt der Dokumente. Gemeint ist hier ebenfalls die Auszeichnung im HTTP-Header durch eine an den Content-Type angehängte Charset-Angabe. Das ist also ebenfalls das gleiche wie unter Punkt 5 und 6. Es wird durch die 3-fache Konfiguration nicht besser oder richtiger. Man hat nun aber drei Stellen, die man beim Ändern beachten muss. Allerdings hat man beim Provider nicht immer die Möglichkeit alle drei Stellen verändern zu können.
Die erste große frage ist ob das alles ist, oder ob ihr noch tipps für mich habt?
UTF-8 und Probleme damit, meist weil man nicht alles beachtet hat, ist nichts Neues, weswegen das hiesige Archiv oftmals schon die Anwort kennt.
PHP kann noch nicht wirklich mit UTF-8 umgehen. Das wird es erst mit Version 6 können. Bis dahin gibt es einige Einschränkungen bei der Stringverarbeitung. Zeichen, die in UTF-8 mit zwei Bytes kodiert werden, werden von PHP als zwei Zeichen angesehen. Trennt man einen String, z.B. weil man nur die ersten 50 Zeichen darstellen will, und erwischt dabei ein 2-Byte-UTF-8-Zeichen genau in der Mitte, ...
(Deine Frage berührt mehrere Themengebiete, aber Barrierefreiheit nun grade nicht.)
echo "$verabschiedung $name";