CakePHP & DIEVOLUTION Blog
CakePHP: Ajax mag nur UTF-8
Die schöne Welt der Encodings. Dort prügeln sich UTF-8, ISO-8859-1 und wie sie alle heißen um die Gunst des Programmierers. Gerade im deutschen Sprachraum ist die ISO-8859-1 Kodierung sehr beliebt. Plant man allerdings Ajax in seine Anwendung zu integrieren, sollte man lieber auf das Universal-Pferd UTF8 setzen.
Denn CakePHP sendet Ajax Requests standardmäßig mit UTF-8 ab. Will man also ein Formular via Ajax senden, werden all die schönen ISO-Umlaute nur noch als Kauderwelsch in der Datenbank gespeichert. Wäre dies nicht schon schlimm genug, so ist zudem auf die Rückgabe (definiert im Options Array als Update) ebenfalls im UTF-8 Format. Man könnte nun am Ajax Helper rumschrauben, so dass dieser ISO Requests sendet. Dies war zumindest mein erster Gedanke, bis ich von AD7Six im CakePHP Irc Channel (#cakephp auf freenode) belehrt wurde, dass es viel einfach wäre, einfach UTF8 zu benutzen.
Leider bedeutete dies: Alle Umlaute mussten von Hand neu gesetzt werden.
Fazit: UTF8 erspart viel Arbeit, wenn man es gleich von Beginn an einsetzt.
Veröffentlicht am Donnerstag, den 24. Januar 2008 um 09:57 Uhr veröffentlicht
Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.
5 Reaktionen zu “CakePHP: Ajax mag nur UTF-8”
-
Am 24. Januar 2008 um 10:07 Uhr
Ajax habe ich bislang noch nicht in cakephp angerührt, werde ich aber sicher mal in den nächsten Tagen, daher meine Frage: Meinst du man soll die komplette Seite, also auch die, die kein Ajax verwenden, als UTF-8 codiert ausgeben oder nur die Ajax Requests? Wenn es der erste Fall ist, wo gibts du die Codierung an, im Header der WEbsite oder gibts da bei Cakephp ein Konfigurationseinstellung?
-
Am 24. Januar 2008 um 10:20 Uhr
Von gemischten Kodierungen halte ich nichts, da ja auch die Datenbank hinter der Webseite ebenfalls eine bestimmte Kodierung braucht. Ich hab in den sauren oder besser langweiligen Apfel gebissen und mir ein Eclipse Plugin runtergeladen, was mir alle Umlaute und Sonderzeichen, die nicht UTF-8 waren angezeigt hat und dann alle geändert. So habe ich eine konsistente UTF-8 Seite mit UTF-8 MySQL DB und brauch mir um die Kodierung keine Sorgen mehr zu machen.
Wenn du nur für die Ajax Calls UTF-8 nimmst, wird beim Auslesen aus der DB ja UTF-8 wieder in ISO umgewandelt, was schief geht und man nur noch Fragezeichen oder schlimmeres bekommt.
Aber vielleicht kennt ja jemand auch noch einen Weg, das Problem ganz anders zu lösen, wer weiß

-
Am 24. Januar 2008 um 18:54 Uhr
Ich hätte da noch eine Frage, zur Variablen “$Javascript”. Ich möchte ein JS-Script in den Header einbinden, aber die Variable $javascript wird nicht erkannt:
Notice (8): Undefined variable: javascript [CORE/app/views/layouts/site_header.ctp, line 13]
hat sich da was in Version 1.2 geändert oder muss ich die erst im Controller “einfügen”? Die Datei ist aber ein Layout und hat keinen Controller… (?)
-
Am 24. Januar 2008 um 20:28 Uhr
Ah, hab die Lösung im Forum gefunden und war ganz einfach, man packt die Helper in den app_controller.
Hab nun in jeder View auf die Helper zugriff, da ich zentral in der app_controller folgendes definiert habe:var $helpers = array(’Html’, ‘Form’,'Javascript’, ‘Ajax’ );
Übrigens habe ich noch gelesen, dass man die Datei app_controller.php aus dem Cake Verzeichnis kopieren und die kopierte version dann in den ordner “app/controllers” legen sollte und nun nur noch diese version bearbeiten sollte. Hat das was mit einem Upgrade zu tun, damit man nicht ausversehen seine Daten überschreibt?
-
paul
Am 9. Februar 2008 um 18:42 Uhrmit
SET NAMES oder SET CHARACTER SET
in mysql statements lassen sich strings in andere zeichensätze überführen, allerdings ist der konsequente einsatz eines zeichensatzes sinnvoller.
Auf einen Blick
Archiv
- November 2008
- Oktober 2008
- August 2008
- Juli 2008
- Juni 2008
- Mai 2008
- April 2008
- März 2008
- Februar 2008
- Januar 2008
- Dezember 2007
- November 2007
- Oktober 2007
- September 2007
- August 2007
- Juli 2007
- Juni 2007
- Mai 2007
- April 2007
Kategorien
- Allgemein (72)
- Cake vs Rails (3)
- CakePHP (42)
- Meinung (16)
- Projekt (6)
- Rails (6)
- Tipps (28)
- Typo3 (4)
Letzte Einträge:
- 11.04.2007: Neustart
- 11.04.2007: Design Version 1 steht
- 11.04.2007: Blog