charset `ANSI_X3.4-1968' not supported

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: charset `ANSI_X3.4-1968' not supported

Beitrag von Faar » Di 17. Sep 2013, 15:31

Das Ü müsste eigentlich in einem utf-8 Dokument (Datei als UTF-8 abspeichern statt Ansi) mit "Ü" eingegeben werden und als utf-8 wieder gespeichert werden.
Aber wenn das Backend nicht utf-8 als Seitenausgabe hat, nützt auch auch recht wenig, weil dort steht:

Code: Alles auswählen

<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
In der Modul-Code Anzeige hat es sich bewährt, das Ü in utf-8 so darzustellen: &#220;
Contenido wandelt hier utf-8 Sonderzeichen oder Fremdsprachen in diese Zeichen um.
Damit funktionieren auch die Frontendausgaben in chinesisch und kyrillisch ganz gut.

Nur ist damit halt der fremdsprachige Text nicht mehr einfach lesbar. Spätere Änderungen werden schwieriger.
Allerdings schafft eine utf-8 Umwandlung von PHP-Code neue Probleme, wenn dieser zuvor als Ansi Code gespeichert wurde.
So kann schnell ein Sonderzeichen ( þ = &thorn; = &#254; ), das als Trenner benützt wird, umgewandelt werden und dann läuft das Programm nicht mehr.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Titho
Beiträge: 2
Registriert: Mo 7. Mär 2016, 14:06
Kontaktdaten:

Probleme beim charset mit Contenido

Beitrag von Titho » Mo 7. Mär 2016, 15:22

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.

Titho
Beiträge: 2
Registriert: Mo 7. Mär 2016, 14:06
Kontaktdaten:

Re: charset `ANSI_X3.4-1968' not supported

Beitrag von Titho » Sa 19. Mär 2016, 19:11

Hallo nochmal,
ich habe das Problem selber lösen können.
Ich habe nach der Änderung im Code jeden kaputten Inhalt in Contenido geöffnet (da wurde er korrekt angezeigt), dann ein Leerzeichen eingefügt und wieder gespeichert.
Danach wurde auch die Seite im Web wieder korrekt angezeigt.

Viele Grüße
Thorsten

Gesperrt