• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Textdatei als UTF-8 speichern -> Darstellung der Umlaute

kruschimappel

Mitglied
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?

lg
 
Gib als Encoding in deiner Webseite auch UTF-8 an, dann funktionierts auch ;)
 
es gibt mehrere faktoren die wichtig sind:


1. IDE (Editor) muss UTF8 nutzen
2. Datenbankverbindung muss UTF8 verwenden
3. Datenbankencoding muss UTF8 sein
4. Ausgabe auf der Webseite muss UTF8 sein

sobald eins davon nicht passt, hast du probleme mit dem encoding, umlaute zu wandeln ist völlig unnötig.
 
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?
 
Besonders wichtig ist, dass du einen entsprechenden Header mitsendest:

Für reine Texte:
PHP:
header('Content-Type: text/plain; charset=utf-8');

Für HTML:
PHP:
header('Content-Type: text/html; charset=utf-8');
 
Besonders wichtig ist, dass du einen entsprechenden Header mitsendest:

Für reine Texte:
PHP:
header('Content-Type: text/plain; charset=utf-8');

Für HTML:
PHP:
header('Content-Type: text/html; charset=utf-8');

Ist es nicht besser, einen Meta-Tag zu setzen?
Code:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

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.
 
Zuletzt bearbeitet:
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.
 
Zurück
Oben