Jens: Anführungszeichen aus WYSIWYG-Editor kommen falsch an.

Hallo.

Wer schon mal in den WYSIWYG-Editor eines Content-Management-Systems Text aus einer Word-Datei kopiert hat, wird das kennen: Es gibt Anführungszeichen unten und oben (und ähnliche bösartige Sonderzeichen).

Und im Bearbeitungsfenster des WYSIWYG-Editors werden die auch alle richtig angezeigt.

Aber auf der Webseite, die dann erzeugt wird, erscheinen kryptische Zeichen wie:

Hallo u201Eich stehe in Anführungszeichen%u201C ich nicht mehr

Wie kommt das?

Einfügen von
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
hat leider nichts bewirkt.

Danke für alle Ideen und Gedankenanstöße
und viele Grüße Jens

  1. Hallo,

    Aber auf der Webseite, die dann erzeugt wird, erscheinen kryptische Zeichen wie:

    Hallo u201Eich stehe in Anführungszeichen%u201C ich nicht mehr

    Wie kommt das?

    Schriftzeichen werden nicht als Zeichen übertragen, sondern als Nummern. Welche Nummer dabei welchem Zeichen entspricht, besagen festgelegte Tabellen wie US-ASCII, ISO-8859-1 oder Unicode (Zeichentabellen, Zeichenkodierung, character tables, character sets, charset).

    Entspricht nun ein Zeichen einem Byte, können höchstens 256 Zeichen definiert werden, denn mehr passt in ein Byte nicht rein. Die Anführungszeichen, die dir fehlen, gehören nicht dazu.

    Unicode umgeht das Problem, indem es statt nur 256 Werten mehrere Millionen anbietet. %u201E ist der wackelige Versuch, das Zeichen Nummer 8222 (hexadezimal dargestellt: 201E) zumindest irgendwie in einen Text zu quetschen, dessen technische Beschränkung auf ein Byte eigentlich nur 256 Werte zulässt.

    Einfügen von
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    hat leider nichts bewirkt.

    Nein, die Anführungszeichen sind in iso-8859-1 nicht drin, du musst schon utf-8 einsetzen (eine Unicode-Variante), aber dabei auch beachten, dass dann der ganze Rest der Seite und auch alle anderen Seiten, die diese Zeichen annehmen oder verarbeiten sollen, ebenfalls in utf-8 kodiert sind.

    Gruß, Frank.

  2. Hallo,

    Hallo u201Eich stehe in Anführungszeichen%u201C ich nicht mehr

    Oh, das CMS (sicherlich nicht der Browser) zeigt direkt den Unicode Code Point des Zeichens an? Praktisch zum Debuggen, wenn man so will.

    Einfügen von
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    hat leider nichts bewirkt.

    Tja. Eklige Zeichensatzprobleme immer.

    Es gibt verschiedene Zeichensätze, die teilweise unterschiedlich kodiert werden. ISO 8859-1 ist ein gängiger Zeichensatz mit Platz für 256 Zeichen, der mit den gebräuchlichen westeuropäischen Zeichen gefüllt ist. Die beiden doppelten Anführungsstriche unten öffnend und oben schließend sind da aber dummerweise nicht drin, Platzprobleme, ä und ö und ü waren wohl wichtiger.

    Unicode ist ein Zeichensatz mit genügend Platz für alle möglichen bisher genutzten Zeichen. Wenn man ein Zeichen sucht, sollte man in Unicode suchen. Die beiden Anführungszeichen sind dort unter den Indexnummern U+201E („) und U+201C (“) zu finden. Die gängige Kodierung des Unicode Zeichensatz ist UTF-8. Hier im Forum wird diese eingesetzt, mit dem Erfolg, dass Du bei passenden installierten Schriftarten die beiden Anführungszeichen in den Klammern gerade zu sehen bekommst und sie so im Quelltext stehen können.

    Nur: Es hilft jetzt nicht, einfach so ein

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    in den Quelltext bzw. in Deinem Fall wahrscheinlich in die Templates einzufügen. Nur die Aussage reicht nicht aus, die Ressource muss tatsächlich in UTF-8 kodiert sein und idealerweise sagt der Webserver über das Protokoll HTTP noch zusätzlich, dass die ausgelieferte Ressource in UTF-8 kodiert ist.

    Dass Du als Ergebnis für ein nicht im ISO 8859-1 Zeichensatz enthaltendes Zeichen den String „u201E“ bekommst, ist eher ungewöhnlich, die gebräuchlichen Browser machen so etwas nicht lässt darauf schließen, dass Dein CMS ...

    ... entweder prinzipiell nur in den Zeichensätzen ASCCI bzw. ISO 8859-1 operiert und generell „andere“ Zeichen in diese Darstellung umwandelt

    ... oder aber so klug ist, festzustellen, dass das gepostete Zeichen nicht im Zielquelltext enthalten ist und es in diese für Besucher eher unpraktische Darstellung umwandelt. Der Unterschied zur ersten Möglichkeit ist hier die Vermutung, dass Dein CMS mit unterschiedlichen Zeichensätzen umgehen kann und sich eventuell danach richtet.

    (Eine weitere Möglichkeit ist es, dass beim Posten des WYSIWYWG-Editor-Inhaltes irgendwas schief geht, aber das sollten in dem Bereich kompetentere Leute als ich beantworten.)

    An Deiner Stelle würde ich gucken, ob Du Dein CMS dahingehend konfigurieren kannst, dass es die erzeugten Seiten in UTF-8 ausliefert. Nicht jedes CMS kann das, leider. Oder ob Dein CMS eventuell „unpassende Zeichen“ anders ausliefern kann, zum Beispiel nicht in ISO 8859-1 enthaltende Zeichen automatisch in ihr entsprechendes Unicode-Entity umkodieren, die hexadezimale Schreibweise hat es ja drauf. Wenn nicht, dann hast Du ein Problem mit Deinem CMS.

    Vorrausgesetzt der WYSIWYWG-Editor hat auch eine Möglichkeit der Eingabe von HTML-Quelltext, bleibt höchstens noch die direkte Eingabe von Entities, es würde sich dann empfehlen, eine Liste der benannten Entities gebräuchlicher Sonderzeichen zur Hand haben. Für die fraglichen Anführungszeichen sind das z.B.

    &bdquo; (in hexadezimaler Schreibweise &#x201e;) für das öffnende doppelte Anführungszeichen unten („)
    &ldquo; (in hexadezimaler Schreibweise &#x201c;) für das schließende doppelte Anführungszeichen oben (“)

    Wirklich toll ist das aber nicht, ja.

    Tim

    1. An dieser Stelle schon einmal Danke für die Hilfe!

      Oh, das CMS (sicherlich nicht der Browser) zeigt direkt den Unicode Code Point des Zeichens an? Praktisch zum Debuggen, wenn man so will.

      Um Mißverständnissen vorzubeugen: das CMS läuft natürlich auch im Browser, es besteht ja auch aus Webseiten. Aber innerhalb des WYSIWYG-Editors wird im Browser alles richtig angezeigt.
      Amüsant ist, dass beim Umschalten auf den HTML-Moduls im WYSIWYG-Fenster statt der Zeichen oder statt einer codierten Form ein schwarzes Kästchen angezeigt wird. Nunja.

      Vorrausgesetzt der WYSIWYWG-Editor hat auch eine Möglichkeit der Eingabe von HTML-Quelltext, bleibt höchstens noch die direkte Eingabe von Entities, es würde sich dann empfehlen, eine Liste der benannten Entities gebräuchlicher Sonderzeichen zur Hand haben. Für die fraglichen Anführungszeichen sind das z.B.

      &bdquo; (in hexadezimaler Schreibweise &#x201e;) für das öffnende doppelte Anführungszeichen unten („)
      &ldquo; (in hexadezimaler Schreibweise &#x201c;) für das schließende doppelte Anführungszeichen oben (“)

      Wirklich toll ist das aber nicht, ja.

      Ja, eben. Der Kunde würde sich bedanken, wenn er sich eine Liste mit Sonderzeichen an die Wand hängen müsste ;-). Er ist ja froh, wenn er mit drag-and-drop einen Text aus Word ins CMS bekommt.

      Aber Deine Spur zu UTF-8 war gut! Und sie hat mich innerhalb von SELFHTML zu
      HTML Zeichenreferenz und
      Internationalisierung
      geführt.

      Ich führe daher im CMS ehe es das fertige HTML der Seite absenden will noch folgende Zeile PHP aus:

        
      //in $code_utf_falsch ist der Quelltext der HTML-Seite, wie das CMS ihn bis dahin erzeugt  
      $code_utf_richtig = preg_replace('/%u(\w{4})/','&#x$1;',$code_utf_falsch);  
      
      

      Damit kommt alles sauber im Browser an.
      Nochmal Danke und Grüße
      Jens