Alice: Umlaute nach Serverumzug mit höherer PHP-Version verschwunden

problematische Seite

Hallo Freunde, meine Website hat letzte Woche den Webhoster gewechselt. Sie läuft mit Wordpress, aber es gibt noch zahlreiche HTML-Seiten. Auf diesen sind nach dem Wechsel sämtliche Umlaute mit � ersetzt worden.

Problem: Die Original-Dateien enthalten die Umlaute. Sobald ich sie auf dem Server übertrage, ist der Quelltext voller �.

ORIGINAL: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html style="direction: ltr;" template="true" lang="Deutsch"><head> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"><title> CONCUSSION (US 2013) | QUEERmdb - Neue lesbische Filme im Kino [nu queer cinema: Homosexualität im Film]</title>

SERVERVERSION: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html style="direction: ltr;" template="true" lang="Deutsch"><head> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"><title> CONCUSSION (US 2013) | queerMdb - Neue lesbische Filme im Kino [nu queer cinema: Homosexualitt im Film]</title>

Der Webhoster sagt, in der Programmierung der Dateien sei nicht "sauber" genug gearbeitet, bzw. wurden diese lediglich in der falschen Codierung abgespeichert. Ich soll mit Notepad++ in UTF-8 ohne BOM encodieren und neu hochladen. Aber die Original-Dateien sind doch ohne BOM, oder? Wenn ich diese im Browser öffne, wird alles korrekt angezeigt.

Hat das noch was mit der PHP-Version zu tun? Die war beim alten Webhoster veraltet. Jetzt wurde sie auf 7.0 erhöht. Vorher wars 5.6.

Gleichzeitig wurde auf allen Seiten der facebook-Like-Counter auf 0 zurückgesetzt. Wahrscheinlich, weil facebook wegen der Umlaute Abweichungen beim Content festgestellt hat. Falls jemand diesbezüglich Ahnung oder Erfahrungen hat, würde ich mich über Tipps freuen. Aber ist natürlich offtopic, weil kein HTML-Problem.

Grüße aus Berlin Alice

  1. problematische Seite

    Liebe Alice,

    Auf diesen sind nach dem Wechsel sämtliche Umlaute mit � ersetzt worden.

    ein Enkodierungsproblem, wie schon vom Hoster richtig erkannt.

    <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"><title>

    Aha! Im Content-Type wird ISO-8859-1 als Enkodierung angegeben. Wenn man eine so gespeicherte Datei als UTF-8 interpretiert, und das tut Dein Browser in diesem Moment, dann "verschwinden" die deutschen Sonderzeichen und werden zu diesen Fragezeichen.

    Lösung? Das ist jetzt ein Fall von "kommt darauf an". Folgende Dinge müssen zusammen passen, damit im Browser alles richtig angezeigt wird:

    1. Die HTML-Dateien müssen in der richtigen Kodierung gespeichert sein.
    2. Der Server muss den Inhalt als in dieser Kodierung vorhandenen Content ausgeben ("überschreibt" das, was in Deiner <meta>-Angabe als ISO-8859-1 steht).

    Es ist heute nicht mehr sinnvoll eine von Unicode abweichende Kodierung zu verwenden. Stelle alles (!) auf UTF-8 um, dann sollte es keine Probleme mehr geben.

    Übrigens:

    <html style="direction: ltr;" template="true" lang="Deutsch"><head>

    Was soll lang="Deutsch" sein? Als Inhalt des lang-Attributes notiert man in einer dieser ISO-Normen, also in Deinem Fall "de" (generell Deutsch) oder "de-DE" (Deutsch, Variante in Deutschland) bzw. "de-AT" (Deutsch, österreichische Variante).

    Liebe Grüße,

    Felix Riesterer.

    1. problematische Seite

      Tach!

      <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">

      1. Der Server muss den Inhalt als in dieser Kodierung vorhandenen Content ausgeben ("überschreibt" das, was in Deiner <meta>-Angabe als ISO-8859-1 steht).

      Etwas Erläuterung: Obige Zeile ist nur ein Ersatz, wenn der Server keine äquivalente Zeile als HTTP-Header mitschickt. Sendet er nur den Content-Type aber ohne Charset, dann nimmt der Browser nur die Charset-Angabe, um den Inhalt entsprechend zu dekodieren. Vermutlich wird der Server nun eine vollständige Zeile mitschicken, aber mit UTF-8. Deshalb zieht die obige Zeile gar nicht mehr. Das kann man nachschauen mit den Entwicklertools der Browser, konkret im Network-Tab. Da sieht man alle Requests und beim Click auf einen auch die Details, wie Request- und Response-Header.

      Die einfachste Lösung wäre, das PHP so zu konfigurieren, dass es keine oder ISO-8859-1 als Kodierung/charset sendet. Die php.ini-Direktive default_charset ist seit PHP-Version 5.6 mit dem Wert UTF-8 vorbelegt, war früher leer. Die moderne Lösung wäre hingegen das bereits erwähnte Umkodieren.

      dedlfix.

      1. problematische Seite

        Lieber dedlfix,

        Die einfachste Lösung wäre, das PHP so zu konfigurieren, dass es keine oder ISO-8859-1 als Kodierung/charset sendet.

        wenn der Hoster das zulässt. Das muss er nicht, womit diese Lösung auch wieder in den Fall "es kommt darauf an" einzuordnen wäre.

        Liebe Grüße,

        Felix Riesterer.

        1. problematische Seite

          Tach!

          Die einfachste Lösung wäre, das PHP so zu konfigurieren, dass es keine oder ISO-8859-1 als Kodierung/charset sendet.

          wenn der Hoster das zulässt. Das muss er nicht, womit diese Lösung auch wieder in den Fall "es kommt darauf an" einzuordnen wäre.

          Man kann das zur Not auch noch mit ini_set() setzen. default_charset ist PHP_INI_ALL. Der generelle Weg wäre über eine .user.ini im Verzeichnis der aufgerufenen Scripte. Der Hoster hat keinen Vorteil, diese Möglichkeit den Usern generell zu unterbinden.

          dedlfix.

          1. problematische Seite

            Lieber dedlfix,

            wenn der Hoster das zulässt. Das muss er nicht, womit diese Lösung auch wieder in den Fall "es kommt darauf an" einzuordnen wäre.

            Man kann das zur Not auch noch mit ini_set() setzen. default_charset ist PHP_INI_ALL.

            Die Welt ist bunt und bei manchem Hoster sieht es nicht so aus, wie Du es vielleicht gewöhnt bist. Ist nur meine Erfahrung...

            Der generelle Weg wäre über eine .user.ini im Verzeichnis der aufgerufenen Scripte.

            Oder eine php.ini. Da kann der Hoster aus "Sicherheitsgründen" aber jede Menge Beschränkungen einrichten.

            Der Hoster hat keinen Vorteil, diese Möglichkeit den Usern generell zu unterbinden.

            Das mag sein, aber Beschränkungen dieser Art können Deinen Lösungsweg schon vermasseln. Da hilft nur ein sich-einarbeiten und eventuell Kontakt mit dem Hoster aufnehmen. Hat Alice wohl schon gemacht, nur kam sie mit den Hinweisen noch nicht klar.

            Liebe Grüße,

            Felix Riesterer.

    2. problematische Seite

      Ich habe mit der Notepad++-Methode "Kodierung in UTF-8 ohne BOM" leider auch keinen Erfolg: https://www.queermdb.de/film/einfach-das-ende-der-welt-2016-ob.html

      Auch wenn ich das ISO-8859-1 lösche und "ohne BOM" speichere, ändert sich nichts: https://www.queermdb.de/film/einfach-das-ende-der-welt-2016-ob-oc.html

      Den kompletten Meta-Content-Tag zu löschen, hat ebenfalls keinen Effekt: https://www.queermdb.de/film/einfach-das-ende-der-welt-2016-om.html

      Macht Notepad++ einen Fehler? Es ersetzt sämtliche Umlaute mit drei Buchstaben. "ä" zb in xE4. Wenn ich das kopiere, kommt das an: Xavier Dolans Verfilmung des Theaterst�� EINFACH DAS ENDE DER WELT erz婬t die Geschichte ...

      Wie muss denn der Code korrekt aussehen???

      👶

      1. problematische Seite

        Hallo,

        hast du die Datei auch in UTF-8 ohne BOM konvertiert?

        Gruß
        Jürgen

        1. problematische Seite

          Tach!

          hast du die Datei auch in UTF-8 ohne BOM konvertiert?

          Genau, der Notepad hat zwei Abschnitte in dem Kodierungsmenü. Der obere ist, wie die Datei gelesen werden soll. Das muss natürlich erstmal ISO-8859-1 bzw. ANSI sein, denn das ist ja das aktuelle Format. Und im unteren Teil des Menüs kann man sie umkodieren lassen.

          dedlfix.

          1. problematische Seite

            DANKE!!!!!!!!!!!!!!!!!!!!!!!!!! Ich hab gleich oben auf "ohne BOM" geklickt, was natürlich Quatsch ist.

            Jetzt wird alles korrekt dargestellt. Leider kommen die facebook-Likes durch die Fehlerbehebung aber nicht zurück.

            1. problematische Seite

              Hallo Alice,

              DANKE!!!!!!!!!!!!!!!!!!!!!!!!!!

              Deine Taste mit der 1 ist kaputt.

              Leider kommen die facebook-Likes durch die Fehlerbehebung aber nicht zurück.

              Weniger ist manchmal mehr.

              Bis demnächst
              Matthias

              --
              Rosen sind rot.