«

»

Jan 17 2006

Beitrag drucken

AJAX und das Character Encoding

Heute nacht habe ich ja mit meinem nicht unbewusst etwas bissigen Artikel über den derzeit ausbrechenden Aktionismus rund um die SQL-Query-Optimierung für die Verhältnisse dieses Blogs eine Lawine losgetreten. So viele Kommentare in so kurzer Zeit zu einem Topic habe ich jedenfalls bisher noch nicht gehabt ;). Dabei ist heute früh allerdings auch ein wichtiger Bug offenbar geworden, der sich wohl in die meisten deutschsprachigen Blogs einnisten dürfte, die die LiveComment-Funktion aus K2 oder Binary Blue verwenden – Umlaute werden in Hieroglyphen „aufgelöst“.

Erste Maßnahme war die testweise Umstellung des Blog-Zeichensatzes auf UTF-8, obwohl mir das europäische ISO-8859-15 deutlich lieber wäre. Damit sind die Kommentare jedenfalls wieder lesbar, und auch die Seiteninhalte bocken nicht weiter rum. Seit ich heute abend zu Hause bin, habe ich nun nach der Ursache für das Problem gesucht und möchte an dieser Stelle meine Erkenntnisse der Allgemeinheit zur Verfügung stellen.

  1. Sendet man Kommentare auf klassische Weise ab, wird das Character encoding verwendet, auf das das Blog konfiguriert ist. Aus diesem Grund stolpern „normale“ Blogger nicht über diese Falle.
  2. Verwendet man hingegen LiveComments, kommt eine Technik namens AJAX zum Zuge. AJAX ist eine neue hippe Wortschöpfung und hat im Webzusammenhang nichts mit einem Scheuermittel zu tun, sondern fasst grob vereinfacht die Anwendung von Javascript und XML und einem speziellen sogenannten „XMLHttpRequest-Objekt“ zusammen. Mehr müssen die meisten über die Bedeutung des Worts gar nicht wissen.
  3. Dieses AJAX sendet, wenn es für das Verschicken von Formulardaten zum Server genutzt wird, die Formulardaten grundsätzlich und unabwendbar in UTF-8-Codierung an den Server.
  4. Auf Serverseite kommen die Daten inkl. Umlauten heile an. Sie werden auch intakt in der Datenbank als neuer Kommentar gespeichert.
  5. Erst beim Auslesen der Kommentare und beim Zusammenbau der Website eines Artikels geht der Unterschied zwischen eingestelltem Encoding und tatsächlichem Encoding der Kommentare dann in die Hose – das ist quasi so, als wolle man seinen Benziner zur Hälfte mit Diesel tanken – das holpert beim Fahren auch sehr schön 😉
  6. Da man den Daten eines Kommentars nicht „an der Nase“ ansieht, in welchem Encoding sie gespeichert wurden, kann man sie nicht einfach wieder ins „richtige“ Encoding transformieren, denn dadurch könnten genauso gut versehentlich auch Daten ins unleserliche konvertiert werden – den Effekt haben in den letzten zwei Stunden sicherlich einige Besucher hier erleben dürfen 😉

Momentan einziger Workaround, den ich zuverlässig ans Laufen bekommen habe – UTF-8-Codierung unter Optionen/Lesen einzustellen und eventuell noch nicht passende Kommentare auf UTF-8 umformatieren. Wenn mir jemand nen Tipp gibt, wie ich schon in der comments-ajax.php die ankommenden Kommentardaten, die mit AJAX versendet wurden, ins richtige Encoding bringe, bau ich das gerne ein – denn ich will mein gutes altes ISO-8859-15 auch zurück….

Permanentlink zu diesem Beitrag: https://www.4null4.de/76/ajax-und-das-character-encoding/

10 Kommentare

Zum Kommentar-Formular springen

  1. Manu
  2. Der Blogger
  3. Käpt’n Knoppaz
  4. J.
  5. Stefan
  6. Thor oder Odin
  7. a/m
  8. a/m
  9. Yannick
  10. Stan

Kommentare sind deaktiviert.