Ich habe gestern eine alte 0.9.2 Installation auf 0.9.6.1p2 gehievt und war zunächst rundum zufrieden. Bis heute eine bulgarische Kollegin einige Textänderungen in ihrer Sprache vornahm und aus Новини (News) eben wie zu MODx Urzeiten "? ? ? ? ? ?" wurde. Dabei hatte ich auf alles geachtet:
- Das sql-file war UTF-8 codiert und jeder "CREATE TABLE"-Befehl mit "DEFAULT CHARSET=utf8" ausgestattet
- die Kollation von Datenbankserver UND Datenbank war auf "utf8_general_ci" eingestellt
- in der confip.inc.php hatte ich per Hand das obligatorische "utf8" in Zeile 9 für $database_connection_charset eingetragen
- TinyMCE Plugin entsprechend auf entity encoding "raw" eingestellt
Und trotzdem nützt das ganze Bohei einer Bulgarin nichts. Sie bekommt wie zu alten 0.9.2 Zeiten Fragezeichen serviert. Falls Ihr mir nicht glaubt, dann holt Euch einfach mal aus der Wikipedia ein paar bulgarische (oder griechische) Sonderzeichen und setzt sie in ein Chunk. Nix da mit utf8.
Die Lösung war, daß man noch immer per Hand die manager/index.php befummeln muß, damit die Session mit der gewünschten Zeichenkollation abläuft. Damit Ihr bei nächster Gelegenheit nicht die gleichen Probleme habt, hier meine Änderungen (MODx 0.9.6.1p2):
1. Neue Variable in manager/includes/config.inc.php erstellen
nach Zeile 9
$database_connection_charset = 'utf8';
einfügen:
$database_collation_connection = 'utf8_general_ci';
2. diese Variable dann in manager/index.php ergänzen:
nach Zeile 141
@mysql_query("SET CHARACTER SET {$database_connection_charset}");
einfügen:
@mysql_query("SET SESSION collation_connection = '{$database_collation_connection}';",$modxDBConn);
Bin wirklich erstaunt, daß das noch immer nötig ist und leicht verärgert über 3 Stunden Sucherei und Bastelei.