Hallo zusammen,
ich habe aktuell genau das hier geschilderte Problem mit Contenido, viele Seiten werden nicht ausgeliefert, weil der HTML Code unvollständig ist. Der Provider hat gestern Abend ein Update an dem PHP-MySQL Connector durchgeführt und nun muss ich das charset wohl explizit setzen.
Ich habe die Änderungen, wie von xmurrix beschrieben durchgeführt, aber es zeigen sich keine Auswirkungen!
Den Contenido Cache habe ich schon gelöscht, muss ich noch etwas anderes machen?
Es wäre super, wenn jemand eine Idee hat!
Vielen Dank und viele Grüße
Thorsten
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:
Code: Alles auswählen
$contenido_charset = 'latin1'; // diese zeile
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.