xhtml - utf-8 ausliefern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • xhtml - utf-8 ausliefern

    Hallo Community

    Dies ist mein erster Beitrag hier ... habe zwar versucht, die Probleme durch durchstöbern diverser Seiten zu lösen, aber das klappt nicht ganz.

    Und zwar geht es mal wieder um das leidige Thema utf-8. Ich habe eine Seite (in xhtml 1.0 strict), welche ich als html und utf-8 ausliefern möchte. So weit, so gut.

    Also benutze ich folgenden Doctype und Metaangabe:

    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
    >
    <
    html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

    [
    usw...] 

    Dann habe ich über diesem Dokument noch den utf-8 Header angegeben:

    PHP-Code:
    header('content-type: text/html; charset=utf-8'); 
    Zeichen wie ä, ö, ü ließen sich nun darstellen (nur beim Auslesen von Text aus einer MySQL-DB musste ich mit mysql_encode arbeiten, damit die umlaute korrekt dargestellt wurden.) Wenn ich mich richtig erinnere, hatte der w3c-Validator auch keinerlei Beanstandungen.

    Dann fiel mir ein, dass ich die Datei selbst garnicht als UTF-8 abgespeichert hatte und wollte dies nachholen. Gesagt, getan - doch plötzlich wirft PHP die Meldung " headers already sent (output...". Das seltsame daran: Ändere ich die Datei wieder auf ANSI statt UTF-8, verschwindet die Meldung wieder.

    Nun gut, ich dachte dann, dass ich den Header vllt garnicht senden muss und habe die Zeile rausgenommen. Jedoch meldet der W3C-Validator jetzt Fehler:

    Line 1, Column 0: character "" not allowed in prolog.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

    sowie

    Line 1, Column 3: XML Parsing Error: Start tag expected, '<' not found.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

    Nochmal kurz:

    Datei in Ansi + Headerangabe; funktioniert
    Datei in UTF-8 + Headerangabe; php zeigt Fehler
    Datei in UTF-8 ohne Headerangabe: Validator meldet Fehler


    Ich könnte die Datei ja auch in Ansi lassen, aber das ich ja nicht der Sinn der Sache.

    Was ist da kaputt?

    Danke
    Zuletzt geändert von Praha; 23.10.2007, 18:55.

  • #2
    sieht so aus, also ob irgendwo vor dem header ein " " steht ;-)
    oder beim speichern in UTF-8 wurde ein leerzeichen ganz am anfang eingefügt
    Tempim.de - Dein kostenloser Bildhoster
    Tipps und Tricks für Webmaster

    Kommentar


    • #3
      Ja, dort stehen ja auch Zeichen. Oben in Meiner Quote sind die nicht sichtbar, im Code selbst schon. Genauso im w3c-Validator: an der Problemstelle ist nur ein Leerzeichen (wenn man es kopiert und woanders einfügt wird daraus ne Zeichenfolge).

      Im Quelltext selber ist dort kein Leerzeichen. Wenn ich das dokument wieder auf Ansi ändere, ohne am Code selbst was zu ändern, gehts ja auch wieder. Es hat irgendwas mit diesem UTF-8 zu tun vermute ich mal.

      Kommentar


      • #4
        Hallo,

        ich vermute mal BOM -> http://de.wikipedia.org/wiki/Byte_Order_Mark
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          ich hatte das gleiche problem.
          nimm einfach pspad, mit dem gehts!
          Tempim.de - Dein kostenloser Bildhoster
          Tipps und Tricks für Webmaster

          Kommentar


          • #6
            Hallo ihr beiden, danke erstmal.

            @Quetschi:

            Also soll ich dieses BOM weglassen? (ich weiß ja nichtmal, wie ich das überhaupt hingemacht habe vllt der Windows Editor dran schuld?). Wikipedia meint ja, BOM kann optional mit UTF-8 verwendet werden, benötigt wirds jedoch nicht.

            Achja: der W3C Validator liefert auch immer folgende Meldung:

            Byte-Order Mark found in UTF-8 File.
            The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported.
            @Seggl-hoch-drei

            Habe mir mal PSPad angeschaut. Doch wie speichere ich nun Dateien unter UTF-8? Ich kann zwar unter "Format" UTF-8 angeben, jedoch scheint es mir so, als sei dies nur für die Anzeige o.ä. gedacht. Denn:
            Erstelle ich eine PHP Datei aus den Vorlagen und speichere diese, so zeigt mir der Windows Editor bei öffnen der Datei später "Ansi" an, obwohl bei Format in PSPad utf-8 eingestellt war.
            Erstelle ich jedoch aus den Vorlagen eine "XHTML Strict utf-8" Datei und speichere diese, zeigt mir der Windows Editor korrekt utf-8 an. Jedoch gibt es in den PHP Vorlagen nichts mit utf-8.


            Grüße
            Zuletzt geändert von Praha; 27.10.2007, 19:23.

            Kommentar


            • #7
              Vielleicht hilft dir das ja

              Kommentar

              Lädt...
              X