Hallo zusammen,
das Problem mit "charset `ANSI_X3.4-1968' not supported" liegt an der fehlenden oder falschen PHP-Einstellung default_charset.
Idealerweise solltet ihr dies in der php.ini auf "ISO-8859-1" setzen. Wenn Ihr keinen Zugriff auf die php.ini habt, könnt ihr die Datei 'config.local.php' in 'contenido/includes' erstellen (falls nicht vorhanden) und folgenden Eintrag hinzufügen:
Code: Alles auswählen
<?php
ini_set('default_charset', 'ISO-8859-1'); // diese zeile!
Außerdem ist es auch wichtig, dass der Zeichensatz der Datenbank-Verbindung mit dem in PHP eingestellten Encoding übereinstimmt. Bei PHP mit "ISO-8859-1"sollte die DB-Verbindung unter 'latin1' laufen. Wenn das bei euch nicht der Fall ist, kann es passieren, dass die Ausgabe im Frontend abgebrochen wird, also ein Teil der HTML-Seite fehlt. Oder beim Speichern von Inhalten im Backend nicht alles wie erwartet funktioniert. Wenn die Verbindungseinstellung der Datenbank nicht auf latin1 gesetzt ist, diesen bitte auf latin1 setzen. Ist das nicht direkt an der Datenbank möglich, dann geht folgendermaßen vor:
In die Datei 'contenido/includes/config.local.php' folgende Zeile hinzufügen:
Dann die Datei 'conlib/local.php' öffnen, und die Funktion connect() ab Zeile 94 ersetzen gegen:
Code: Alles auswählen
function connect($Database = "", $Host = "", $User = "", $Password = "") {
global $db_link;
if ((0 == $db_link || !is_resource($db_link)) && !is_object($db_link)) {
$db_link = parent::connect($Database, $Host, $User, $Password);
global $contenido_charset;
if (!empty($contenido_charset)) {
$this->query('SET NAMES "' . $this->escape($contenido_charset) . '"');
}
}
$this->Link_ID = $db_link;
return $this->Link_ID;
}
Nun habt ihr die Möglichkeit, in der contenido/includes/config.local.php den Zeichensatz der Datenbankverbindung zu setzen, und durch die Änderung in der conlib/local.php wird dieser Zeichensatz immer von CONTENIDO verwendet.
Ihr könnt auch PHP und die DB mit UTF-8 laufen lassen, z. B.:
Code: Alles auswählen
<?php
ini_set('default_charset', 'UTF-8');
$contenido_charset = 'utf8';
aber das Bedarf eventuell einger anderer Anpassungen, besser ist 'ISO-8859-1' und 'latin1'.
Wichtig:
Während die Einträge in der 'contenido/includes/config.local.php' bei einem Update nicht überschrieben werden, ist das bei der Änderung in der 'conlib/local.php' nicht der Fall. Wenn ihr CONTENIDO aktualisiert, wird die Datei überschrieben, also denkt daran, diese Datei vorher zu sichern, und eure Änderungen nach dem Update wieder hinzu zufügen.
Grüße
xmurrix