FAQ: Warum bekomme ich zerstückelte Sonderzeichen angezeigt?

  • Unter diesem Punkt steht in der FAQ:

    Zitat

    Weil in deinem Blog UTF-8 eingestellt ist. Im deutschsprachigen Raum wird aber meistens iso-8859-1 benutzt. Die Zeichenkodierung wird umgestellt im:

    Code
    Adminbereich >> Optionen >> Lesen > Zeichensatz für Seiten und Feeds


    Diese Antwort ist nicht hilfreich.

    Mein Vorschlag:

    Es gibt zwei Arten falsch dargestellter Zeichen: 1. � (bzw. Fragezeichen) und 2. ä (zwei Zeichen für eines).

    1. Im ersten Fall liegen die Daten sehr wahrscheinlich in der Zeichenkodierung (nicht Zeichensatz) ISO-8859-1 bzw. Windows-1252 in der Datenbank, oder das Theme enthält derart kodierte Zeichen. Da muß man genau hinsehen, aus welcher Quelle die Zeichen kommen.

      Wenn es die Datenbank ist, dann sollte sie auf UTF-8 umgestellt werden.

      Wenn es das Theme ist, dann kann man einfach die falsch kodierte Datei öffnen und als UTF-8 ohne BOM abspeichern.

      Auf keinen Fall sollte man im Backend ISO-8859-1 einstellen! Dann kann man viele Zeichen (€, …, ‰) nicht mehr unmaskiert ausgeben. Langfristig hat man ohne UTF-8 deutlich mehr Probleme als mit. Nicht zuletzt weil der Newsfeed (RSS und ATOM) ja als XML ausgegeben wird und XML-Leser zwar UTF-8 und UTF-16 können müssen, nicht aber ISO-8859-1.

    2. Wenn man hingegen ä sieht, also zwei Zeichen, wo nur eines erwartet wird, dann wird vermutlich bei der Ausgabe ISO-8859-1 behauptet, obwohl die Daten in UTF-8 vorliegen. Zur Kontrolle sehe man unter Einstellungen/Ausgabe nach, ob da wirklich UTF-8 unter Zeichenkodierung für Seiten und Feeds eingetragen ist.
      Außerdem kann man die Seite mit dem Websniffer prüfen lassen. Dort bekommt man eine Übersicht der HTTP-Header; einer sollte so aussehen:

      Code
      Content-Type: text/html; charset=UTF-8


      Steht in »charset« etwas anderes, obwohl im Backend UTF-8 eingestellt wurde, muß irgendwo im Theme oder in einem Plugin diese Zeile stehen:

      PHP
      header('Content-Type: text/html; charset=UTF-8');


      Die muß man dann löschen.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Danke. Ich sehe gerade, daß ich kleinen Schnitzer drin habe, sorry.
    Der falsche Header ist natürlich nicht:

    PHP
    header('Content-Type: text/html; charset=UTF-8');

    Vielmehr steht etwas anderes als UTF-8 drin oder gar nichts.

    Korrektur:
    Steht in »charset« etwas anderes, obwohl im Backend UTF-8 eingestellt wurde, muß irgendwo im Theme oder in einem Plugin diese Zeile stehen:

    PHP
    header('Content-Type: text/html');


    oder

    PHP
    header('Content-Type: text/html;charset=ISO-8859-1');


    Die muß man dann löschen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!