Anzeige

PHP - Ausgabe von Umlauten

PHP - Ausgabe von Umlauten | PSD-Tutorials.de

Erstellt von Winkili, 19.10.2011.

  1. Winkili

    Winkili Noch nicht viel geschrieben

    Dabei seit:
    12.01.2011
    Beiträge:
    33
    Geschlecht:
    männlich
    PHP - Ausgabe von Umlauten
    Liebe PSD'ler,

    mein aktuell etwas größeres Projekt, ein Back-End, bringt mich gerade zur Weißglut.
    Umlaute die in PHP ausgegeben werden, werden nicht richtig angezeigt. Dabei spielt es keine Rolle wie sie vorher behandelt werden. Wie ich gelesen habe, mögen sich utf8 und str_replace wegen der höheren Bitzahl in manchen Fällen nicht. Doch auch ein einfaches 'echo' bringt mir keine schönen Umlaute sondern lediglich �.
    Das charset ist in HTML auf utf-8 gestellt und hart in die HTML-Datei geschriebene Umlaute werden auch korrekt dargestellt - nur PHP macht zicken ;)

    Für einen (rettenden) Tipp wäre ich super dankbar - vielen Dank.
     
    #1      
  2. dlogic

    dlogic Allrounder

    Dabei seit:
    15.06.2007
    Beiträge:
    354
    Geschlecht:
    männlich
    Ort:
    Rostock
    Software:
    Photoshop, Illustrator, Dreamweaver, Notepad2, Magix Video, WaveLab, Audacity
    Kameratyp:
    Canon EOS 70D, EXA 1a, Praktika
    PHP - Ausgabe von Umlauten
    AW: PHP - Ausgabe von Umlauten

    Kommen die Daten aus einer DB und ist der MySQL-Zeichensatz ebenfalls in utf-8 ? Ansonten:

    Die 5 goldenen Regeln für UTF-8 in PHP/MySQL und HTML:

    - Die Datenbank, Tabellen, Spalten sollten jeweils auf utf8_bin/utf8_cs gestellt werden (alternativ utf8_ci)*
    - Die Datenbank-Verbindung muss mit SET NAMES utf8 auf UTF-8 gesetzt werden (häufiger Fehler)
    - Die PHP-Skripte sollten in der Entwicklungsumgebung/dem Editor als UTF-8-Datei abgespeichert werden (ohne UTF-8 BOM).
    - Das PHP-Skript sollte entsprechend einen HTTP-Header senden: header("Content-type:text/html; charset=utf-8");
    - Die HTML-Seiten sollten zusätzlich noch einen gleichlautenden <meta>-Tag anführen: <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    Der erste Punkt kann über phpMyAdmin's Strukturansicht der Datenbank, der Tabellen und der Spalten überprüft werden,
    die letzten beiden Punkte können im Browser überprüft werden: Firefox->Ansicht->Zeichenkodierung->Unicode UTF-8 (?)

    Wenn nun weiterhin falsche Zeichen dargestellt werden, wurde mindestens ein Punkt nicht beachtet, oder es sind bereits fehlerhafte Daten aus der Datenbank, einer Datei oder dem PHP-Skript/HTML-Seite eingebunden oder durch eine Konvertierung der Maßnahmen erzeugt worden.
     
    Zuletzt bearbeitet: 19.10.2011
    #2      
  3. Winkili

    Winkili Noch nicht viel geschrieben

    Dabei seit:
    12.01.2011
    Beiträge:
    33
    Geschlecht:
    männlich
    PHP - Ausgabe von Umlauten
    AW: PHP - Ausgabe von Umlauten

    wow - vielen Dank für die tolle Antwort.

    Datenbank, Tabelle und Spalten sind auf utf_general_ci gestellt.
    mysql_query("SET NAMES 'utf8'", $db) steht in der connect.inc.php mit drinnen.
    Dokumente wurden nochmals in utf8 neu gespeichert und sowohl die PHP- als auch die HTML-Dateien mit dem header versehen.
    PHP kann mit Umlauten nun super umgehen, stellt sie richtig dar und in die Datenbank werden sie ebenfalls schön gespeichert.

    Was aktuell noch nicht funktioniert ist das richtige Auslesen der Daten aus der Datenbank. Für ein ö kommt ein ö zurück, scheinbar in ISO 8859-1 und nicht utf-8.

    Wenn jemand spontan einen Tipp hat, schnell her damit. Ansonsten schau' ich nochmals alle Dateien durch und prüfe sie mit den 5 goldenen Regeln.

    Edit:
    Fehler gefunden: ein htmlentities hat sich versteckt :-/
    Vielen Dank nochmals an den Helfer.
     
    Zuletzt bearbeitet: 19.10.2011
    #3      
x
×
×