Falsche Kodierung trotz richtigem META Tag

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

  • Falsche Kodierung trotz richtigem META Tag

    Hallo,
    ich stehe vor einem Rätsel. Trotz Angabe der Kodierung im Head Bereich einer HTML Seite wird die Seite im Browser mit einer anderen Kodierung dargestellt.

    Im Quelltext sieht man folgende Zeile im Head der Seite:
    Code:
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    Ich vermute, dass es eher nichts mit PHP zu tun hat, ich habe die Seite aber mit PHP gemacht, daher poste ich das Problem trotzdem hier. Den PHP Code habe ich unter KDE mit Quanta+ geschrieben und die Kodierung im Editor natürlich auf UTF-8 eingestellt.

    Was mich wundert ist, dass die Namen, die aus der Datenbank kommen, richtig kodiert sind.

    Andere Umlaute, wie zum Beispiel im Wort "Löschen" sind bei mir jedenfalls vermurkst. Habe das mit Firefox unter Linux und Windows probiert. Auch mit dem IE ist es das gleiche.

    Und noch etwas: Die gleiche Seite wird bei mir zu Hause auf dem lokalen Webserver und lokalem MySQL Server richtig angezeigt ...

    Da blicke ich nicht mehr durch. Hat es etwas mit dem Provider zu tun oder habe ich einen Fehler gemacht, den ich nicht sehe oder ... ?

    Bitte um Hilfe!
    Zuletzt geändert von f.gruber; 03.06.2010, 23:44. Grund: Datensicherheit
    Gruß
    Ferdinand

  • #2
    Eine Angabe zur Zeichenkodierung in den HTTP-Antwortheadern hat bekanntlich Vorang vor einer per META-Element gemachten ...

    http://web-sniffer.net/?url=http://a...r.at/index.php
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo,

      es könnte schon ein PHP-Problem sein, versuch mal folgendes am Anfang (!) des Scripts einzufügen:

      PHP-Code:
      header("Content-Type: text/html; charset=UTF-8"); 
      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        ... versuch mal folgendes am Anfang (!) des Scripts einzufügen:
        PHP-Code:
        header("Content-Type: text/html; charset=UTF-8"); 
        Danke für diesen Tipp. Habe diese Zeile am Anfang des Skriptes eingefügt. Das Ergebnis ist überraschend:

        Die aus der Datenbank generierten Namen haben jetzt zerstörte Umlaute, dafür wird der Rest der Seite richtig dargestellt, jedenfalls bei meinem Computer ...
        Zuletzt geändert von f.gruber; 03.06.2010, 23:42.
        Gruß
        Ferdinand

        Kommentar


        • #5
          Zitat von wahsaga Beitrag anzeigen
          Eine Angabe zur Zeichenkodierung in den HTTP-Antwortheadern hat bekanntlich Vorang vor einer per META-Element gemachten ...

          View HTTP Request and Response Header
          Da verstehe ich leider nur Bahnhof. Bin ein Hobby Programmierer.

          Was ist ein Antwortheader?
          Wie kann ich das beeinflussen?

          Ja, und warum wird bei meinem Server alles korrekt dargestellt
          Zuletzt geändert von f.gruber; 03.06.2010, 23:42.
          Gruß
          Ferdinand

          Kommentar


          • #6
            Dann behandelst du die DB-Daten falsch. Welche Zeichencodierung haben die Daten und welche hast du für die Verbindung benutzt?
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Zitat von f.gruber Beitrag anzeigen
              Die aus der Datenbank generierten Namen haben jetzt zerstörte Umlaute, dafür wird der Rest der Seite richtig dargestellt, jedenfalls bei meinem Computer ...
              Welchen Zeichensatz verwendet die Datenbankverbindung von PHP?

              Kommentar


              • #8
                Zitat von h3ll Beitrag anzeigen
                Welchen Zeichensatz verwendet die Datenbankverbindung von PHP?
                Wie kann ich das feststellen?

                PHP-Code:
                mysql_set_charset ("UTF-8"); 
                liefert folgendes:

                Code:
                Call to undefined function mysql_set_charset()
                Das dürfte bedeuten, dass beim Provider eine zu alte MySQL oder PHP Version installiert ist, sehe ich das richtig?

                Code:
                mysql_query("SET NAMES 'UTF-8'");
                mysql_query("SET CHARACTER SET 'UTF-8'");
                habe ich auch versucht - ohne Wirkung.
                Gruß
                Ferdinand

                Kommentar


                • #9
                  Zitat von f.gruber Beitrag anzeigen
                  Code:
                  mysql_query("SET NAMES 'UTF-8'");
                  mysql_query("SET CHARACTER SET 'UTF-8'");
                  habe ich auch versucht - ohne Wirkung.
                  Hast du anschließend auch mit neuen Daten getestet ...?

                  Denn die alten sind höchstwahrscheinlich schon korrupt, wenn du vorher beim Einfügen dieser nicht die Kodierung angegeben hast.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    PHP-Code:
                    mysql_set_charset ("UTF-8"); // falsch
                    mysql_set_charset ("utf8"); // erheblich besser 
                    PHP-Code:
                    // genauso falsch!
                    mysql_query("SET NAMES 'UTF-8'");
                    mysql_query("SET CHARACTER SET 'UTF-8'");


                    //besser
                    mysql_query("SET NAMES 'utf8'");
                    mysql_query("SET CHARACTER SET 'utf8'"); 
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Zitat von wahsaga Beitrag anzeigen
                      Hast du anschließend auch mit neuen Daten getestet ...?
                      Denn die alten sind höchstwahrscheinlich schon korrupt, wenn du vorher beim Einfügen dieser nicht die Kodierung angegeben hast.
                      Die Daten werden mit phpMyAdmin ganz korrekt angezeigt. Ausserdem verwende ich ja die gleiche Datenbank (MySQLDump) auf meinem Server und alles ist ok.
                      Gruß
                      Ferdinand

                      Kommentar


                      • #12
                        Zitat von f.gruber Beitrag anzeigen
                        Die Daten werden mit phpMyAdmin ganz korrekt angezeigt.
                        Und welche Kodierung hast du im phpMyAdmin eingestellt ...?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Problem gelöst

                          Zitat von combie Beitrag anzeigen
                          PHP-Code:
                          mysql_set_charset ("UTF-8"); // falsch
                          mysql_set_charset ("utf8"); // erheblich besser 
                          Diese Funktion kennt er wirklich nicht ...

                          PHP-Code:
                          // genauso falsch!
                          mysql_query("SET NAMES 'UTF-8'");
                          mysql_query("SET CHARACTER SET 'UTF-8'");


                          //besser
                          mysql_query("SET NAMES 'utf8'");
                          mysql_query("SET CHARACTER SET 'utf8'"); 
                          Ja, ja, ja ----->
                          Das war der Fehler. Hat mich Stunden gekostet. Vielen, vielen Dank für's genaue Hinschauen!

                          Jetzt geh' ich einen trinken.
                          Gute Nacht alle zusammen!
                          Gruß
                          Ferdinand

                          Kommentar


                          • #14
                            Diese Funktion kennt er wirklich nicht ...
                            Aktiviere mal PHP5 ....
                            Wir werden alle sterben

                            Kommentar


                            • #15
                              Zitat von combie Beitrag anzeigen
                              Aktiviere mal PHP5 ....
                              Wie kann ich feststellen, welche PHP Version der Provider hat? Der Provider hat die Funkion phpinfo() deaktiviert - aus "security reasons".

                              Wie soll ich bzw. kann ich PHP5 "aktivieren"?
                              Gruß
                              Ferdinand

                              Kommentar

                              Lädt...
                              X