Abend,
ich habe eine Website mit eigenem CMS auf UTF-8 umgestellt. Soweit funktioniert das speichern und auslesen fehlerfrei (Umlaute werden korrekt dargestellt), allerdings sehen die Umlaute in der Textdatei etwas komisch aus, z.B. so:
Jahresüberblick
Gibt es eine Möglichkeit, das anders zu speichern (als ü oder einfach ü), gibt es in PHP vielleicht eine passende Funktion?
Also ausgegeben wird alles korrekt auf der Website. Nur öffne ich die Textdatei im Browser, sieht man die komischen Zeichen. Bei den Seiteninformationen wird angezeigt, dass die Textdatei ISO-8859-1 hat. Wird sie jetzt in UTF-8 gespeichert und vom FF nur standardmäßig als ISO-8859-1 angezeigt? Dann hätte sich das Problem ja erübrigt
Gibt es eine PHP Funktion, die eine UTF-8-txt in einer ISO-8859-1-Webseite korrekt anzeigt?
Wird sie jetzt in UTF-8 gespeichert und vom FF nur standardmäßig als ISO-8859-1 angezeigt?
Wenn der Inhalt ansonsten im Rahmen der Seite (wo er vermutlich noch irgendwie von einem PHP-Script geladen wird?) richtig aussieht, liegt’s sicher einfach daran, ja.
Angenommen ich bin auf dieser Seite, speichere sie ab und öffne dann die gespeicherte Version - sollten dann Umlaute nicht wieder falsch dargestellt werden? Oder wird dabei in irgendeiner Weise mitgespeichert, dass im header UTF-8 als charset angegeben ist?
Der Meta-Tag wird von etwaigen Servereinstellungen überschrieben. Das ist eine sehr häufige Fehlerquelle, weil das nicht unbedingt offensichtlich ist. Man denkt, man hätte die Seite korrekt per meta-Tag auf UTF-8 umgestellt, aber trotzdem bleibt die Darstellung fehlerhaft, weil der Content-Type-Header des Servers das Charset mit ISO-8859-1 überschreibt.
Das tatsächliche Encoding einer Seite lässt sich im Firefox etwa im Kontextmenü unter „View Page Info > Encoding“ einsehen.
Was das Abspeichern (also Herunterladen) angeht, hast du aber meiner Ansicht nach Recht. Da könnte ein meta-Tag die Darstellung unter Umständen berichtigen.
Gut ist’s, beides zu setzen. (Vielleicht ist der meta-Tag sogar vorgeschrieben, das weiß ich gerade nicht.) Für die Darstellung im Web ist in der Regel der Content-Type-Header entscheidend.
Dann lag es an der Servereinstellung, dass beim Anschauen der Textdatei die Umlaute komisch aussehen.
Ich hab meine Webseiten zum einen per Meta-Tag auf UTF-8 gestellt und dann noch per PHP-Header. Reicht das oder muss ich in der htaccess noch etwas ändern?
Das reicht. header() in PHP und Einstellungen in der .htaccess verändern beide denselben Wert, nämlich den Header der HTTP-Response, mit der deine Seite an den Client übermittelt wird.
Durch die Einstellungen in der .htaccess-Datei könntest du höchstens noch zusätzlich erreichen, dass Nicht-PHP-Seiten (zum Beispiel eine direkt per URL angewählte .txt-Datei) auch mit dem richtigen Charset ausgeliefert werden. Dort steht die header()-Funktion ja logischerweise nicht zur Verfügung.