1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Zeichenkodierung

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Thyrael, 20.03.08.

  1. Thyrael

    Thyrael Antonowka

    Dabei seit:
    11.11.06
    Beiträge:
    356
    Hallo miteinander,

    ich habe eine Frage bzw. ein Problem das mich mittlerweile ganz schön nervt. Ich erstelle zur Zeit eine Homepage. Der Inhalt wird zum Teil aus einer Datenbank geholt und zum Teil einfach nur aus Dateien.

    Mein Problem ist die Zeichencodierung.

    Alle Daten die aus der Datenbank ausgelesen werden, werden auch richtig wiedergegeben (Umlaute) Jedoch wird kein Umlaut der aus einer Datei kommt richtig ausgegeben. Ich hab schon alle möglichen Codierungen versucht doch keine funktioniert richtig. Nehme ich eine Codierung die die Dateien richtig darstellt, werden die Inhalte der Datenbank nicht richtig angezeigt, nehme ich eine Codierung bei der die Inhalte aus der Datenbank richtig dargestellt werden, sind die Inhalte aus den Dateien nicht richtig dargestellt.

    Metatags werden nicht wirklich angenommen:

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

    Ich hoffe ich konnte mich klar ausdrücken und hoffe außerdem dass mir jemand helfen kann, der dieses Problem vielleicht schon hatte... :)
     
  2. drok

    drok Klarapfel

    Dabei seit:
    02.06.07
    Beiträge:
    278
    Code:
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
    sollte eigentlich funktionieren
     
  3. Thyrael

    Thyrael Antonowka

    Dabei seit:
    11.11.06
    Beiträge:
    356
    Danke für die schnelle Antwort. Aber in diesem Metatag hab ich schon so ziemlich jede Codierung eingetragen. Immer das selbe Problem. Der einzige Unterschied ist, dass statt der Fragezeichen, dann andere Zeichen angezeigt werden. Sogar MacRoman hab ich schon probiert.. *gg*
     
  4. drok

    drok Klarapfel

    Dabei seit:
    02.06.07
    Beiträge:
    278
    Zumindest sollten nun die Daten aus der DB korrekt dargestellt werden, oder ?

    Welche Dateien ließt du denn aus ? Es kann sein das du diese Daten vor der Ausgabe konvertieren musst, damit die im Browser korrekt angezeigt werden.
     
  5. Seddi

    Seddi Fießers Erstling

    Dabei seit:
    29.05.07
    Beiträge:
    127
    1. Lösung: du machst eine Abfrage deiner Eingabe, ob 'ä','ö','ü' oder 'ß' enthalten sind und wandelst diese in html-freundliche Werte um, z.B. ü, ö .. usw.

    Nachteil: deine Werte liegen in diesem Format in der Datenbank, z.B. Würfel == Würfel.

    2. Lösung: du verwendest die PHP-Funktion htmlentities() http://de3.php.net/htmlentities

    Es gibt mit Sicherheit auch noch reichlich andere Lösungen, wie du das Problem umgehen kannst. Meinerseits hast du die beiden erhalten, vielleicht hilft dir das ja schon.
     
  6. Thyrael

    Thyrael Antonowka

    Dabei seit:
    11.11.06
    Beiträge:
    356
    Komischerweise nicht. Nehme ich utf-8 wird absolut kein Umlaut richtig dargestellt. Weder aus der Datenbank noch aus einer Datei.

    Lasse ich den Codierungsmetatag komplett weg, werden die Umlaute aus der Datenbank richtig dargestellt... Jedenfalls aus der einen Tabelle aus einer anderen Tabelle und aus Dateien ==> nur Fragezeichen
     
  7. drok

    drok Klarapfel

    Dabei seit:
    02.06.07
    Beiträge:
    278
    Kannst du vllt etwas Quellcode posten ?
    Wie ließt du die Dateien aus, welche Dateien sind es überhaupt und in welchem Format stehen die Daten in der Datei ?

    Vllt kommt man so einer Lösung schon etwas näher.

    Mit utf-8 kannst du schonmal Umlaute direkt ins HTML schreiben, ohne die HTML-Entitäten verwenden zu müssen.

    Ist jetzt bloß die Frage in welchem Format die Daten ankommen.
     
  8. Hairy

    Hairy Sonnenwirtsapfel

    Dabei seit:
    07.08.07
    Beiträge:
    2.397
    Die Lösung ist, alles konsequent auf UTF-8 einzustellen und auch so auszuliefern.
    Warum UTF-8? -> Darum.

    Wie?
    1. In deinem Code-Editor muss UTF-8 für jede einzelne Datei eingestellt sein.
    2. Der Server muss angewiesen werden, als UTF-8 auszuliefern (
    Code:
    <?php header('content-type: text/html; charset=utf-8'); ?>
    )
    3. Die Datenbank muss auf UTF-8 eingestellt werden.

    Mehr dazu hier.

    Die beste, zukunftssicherste und einfachste Lösung.
    Außerdem werden außer &lt;, &gt;, &quot; und &amp; werden keine Entities benötigt.
     
  9. Thyrael

    Thyrael Antonowka

    Dabei seit:
    11.11.06
    Beiträge:
    356
    Danke für eure schnelle Hilfe. Es war tatsächlich so, dass ich vergessen hatte im Code-Editor utf-8 einzustellen.
     
  10. floeschen

    floeschen Horneburger Pfannkuchenapfel

    Dabei seit:
    13.08.06
    Beiträge:
    1.402
    Gerade umgekehrt

    Bei mir verhält es sich gerade verkehrt herum: Die Daten aus der MySQL-Tabelle werden falsch angezeigt, also ç wird durch ein ? ersetzt, aber Zeichen aus einer Datei kommen richtig an.

    Dabei sollte eigentlich alles stimmen, denn die Tips aus diesem Thread habe ich komplett umgesetzt:
    • Code:
      header('Content-Type: text/html; charset=utf-8');
      wird mitgesendet, am Anfang der Datei
    • MySQL ist auf utf8_unicode_ci eingestellt
    • META-Tag ist da, mit UTF-8
    Wo könnte mein Fehler liegen oder gibt es eine Möglichkeit, das zurechtzubiegen? Die PHP-Funktion htmlentities hat zwar geholfen, aber es wäre mir lieber, wenn ich wirklich mit UTF-8 arbeiten könnte.
     
  11. Hairy

    Hairy Sonnenwirtsapfel

    Dabei seit:
    07.08.07
    Beiträge:
    2.397
    Wie kommen denn die Daten IN die MySQL-Datenbank? Möglicherweise musst du das entsprechende Formular noch auf UTF-8 setzen. Wie MySQL das intern speichert, ist nicht so wichtig. Nur die Ausgabe muss zur Eingabe passen.
     
    floeschen gefällt das.
  12. floeschen

    floeschen Horneburger Pfannkuchenapfel

    Dabei seit:
    13.08.06
    Beiträge:
    1.402
    Danke für die Hilfe. ;)

    Das Problem hat sich gelöst, dank einem Eintrag im Forum von SELFHTML. Nun sende ich einen MySQL-Query immer am Anfang jeder Seite, in dem folgendes steht:
    Code:
    SET NAMES utf8
    Ich bin eben beim Aufbau eines kleinen für mich gemachten CMS und gebe die Daten bisher nur mit dem phpMyAdmin ein. Jetzt komme ich dann daran, per Formular alles einzugeben und zu ändern.
     

Diese Seite empfehlen