Hallo,
ich benutzte auf meiner Contenido Seite xajax. Da der XMLHttpRequest dieses Modules standardmäßig UTF8 benutzt habe ich folgendes Problem:
ich lege per normaler php/mysql query (ohne ajax) einen datensatz in die datenbank. alle umlaute werden in der DB-Tabelle (im phpmyadmin) als bspw. %F6 (für ö) angezeigt.
Wenn ich jetzt eine Abfrage per xajax auf die datenbank mache und nach dem buchstaben ö suche liefert er logischerweise 0 resultate zurück...
wie kann ich also von vornerhrein die komplette contenido datenbank, das komplette contenido CMS auf UTF 8 stellen. Muss PHP bzw. apache auch konfiguriert werden um nur per UTF8 zu senden?
Falls jmd ein tutorial dafür hat oder eine kurze anleitung hier schreiben könnte wäre ich sehr dankbar...
alles auf UTF8 stellen
Re: alles auf UTF8 stellen
Du musst zweierlei unterscheiden: Die Kodierung (latin oder utf8) und die Escapung(addslashes, htmlentities, urlencode).
Wenn Du auf die Datenbank zugreifst, musst Du ihr mitteilen, in welcher Kodierung Du die strings schickst oder haben willst, dann werden sie automatisch passend umgewandelt. Das kann man bei der Initialisierung der Datenbankverbindung tun. Contenido redet dabei mit der Datenbank immer latin1 (das lässt sich wohl nicht so einfach umstellen), wobei es allerdings da auch einen Bug gibt, dessen Fix immer noch nicht übernommen ist:
http://forum.contenido.org/viewtopic.ph ... highlight=
Du wirst allerdings u.U. ein weiteres Problem haben: Contenido escaped eigentlich alle strings je nach Zweck unterschiedlich, einerseits aus Sicherheitsgründen, andrerseits kann man so alle Buchstaben benutzen, obwohl man nur latin1 hat. Deshalb musst Du herausfinden, wie die Daten, in denen Du suchen willst, escaped sind, und den Suchbegriff genau so escapen, bevor Du ihn an die DB schickst.
Hoffe, das hilft.
Wenn Du auf die Datenbank zugreifst, musst Du ihr mitteilen, in welcher Kodierung Du die strings schickst oder haben willst, dann werden sie automatisch passend umgewandelt. Das kann man bei der Initialisierung der Datenbankverbindung tun. Contenido redet dabei mit der Datenbank immer latin1 (das lässt sich wohl nicht so einfach umstellen), wobei es allerdings da auch einen Bug gibt, dessen Fix immer noch nicht übernommen ist:
http://forum.contenido.org/viewtopic.ph ... highlight=
Du wirst allerdings u.U. ein weiteres Problem haben: Contenido escaped eigentlich alle strings je nach Zweck unterschiedlich, einerseits aus Sicherheitsgründen, andrerseits kann man so alle Buchstaben benutzen, obwohl man nur latin1 hat. Deshalb musst Du herausfinden, wie die Daten, in denen Du suchen willst, escaped sind, und den Suchbegriff genau so escapen, bevor Du ihn an die DB schickst.
Hoffe, das hilft.