charset `ANSI_X3.4-1968' not supported

farina
Beiträge: 216
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

charset `ANSI_X3.4-1968' not supported

Beitrag von farina » Di 30. Okt 2012, 15:10

Hallo,

habe gerade die Version 4.8.18 installiert. Das Setup hat gemeldet, dass die Installation geklappt hat.

Ich kann mich ins Backend einloggen, aber keinen Artikel aufrufen.
Im Fehlerlog steht:

Code: Alles auswählen

[30-Oct-2012 14:01:09] PHP Warning:  htmlspecialchars(): charset `ANSI_X3.4-1968' not supported, assuming iso-8859-1 in /srv/www/vhosts/xxx.de/httpdocs/contenido/includes/functions.php54.php on line 44
Das Frontend hat die gleiche Anzeige des Fehlers.
Ach so:
MySql - 5.5.25
PHP - 5.3.8

Kennt sich einer aus? Was kann ich tun?

Gruß farina

xmurrix
Beiträge: 2744
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

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

Beitrag von xmurrix » Di 30. Okt 2012, 23:25

Hallo Farina,

anscheinend versucht PHP bei Aufruf von htmlspecialchars() das Encoding selber zu ermitteln und verwendet hierfür 'ANSI_X3.4-1968'.

Wenn du die Möglichkeit hast, dann setze in der php.ini die Einstellung (default_charset) auf 'ISO-8859-1', also

Code: Alles auswählen

default_charset = "ISO-8859-1"
Oder, falls nicht vorhanden, erstelle eine Datei 'config.local.php' in 'contenido/includes' und schreibe folgendes rein:

Code: Alles auswählen

<?php

ini_set('default_charset', 'ISO-8859-1');

Gruß
xmurrix

farina
Beiträge: 216
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

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

Beitrag von farina » Mi 31. Okt 2012, 14:06

Danke für die Antwort xmurrix, deine Antwort hat etwas weiter geholfen.

Also,...
ich habe die config.local.php wie oben beschrieben hoch gelanden.
Nun kann ich die Seite aufrufen, habe aber das nächste Problem.

Der Quelltext wird abgebrochen an dieser Stelle

Code: Alles auswählen

<meta name="description" content="
Fehlermeldung beim Aufruf der Startseite:

Code: Alles auswählen

Parse error: syntax error, unexpected T_STRING in /srv/www/vhosts/xxx/httpdocs/contenido/includes/include.con_editcontent.php(634) : eval()'d code on line 793 
Das Problem ist hier beschrieben: http://forum.contenido.org/viewtopic.ph ... 79#p153479
Den genannten Lösungsweg habe ich probiert (Kollation in DB umgestellt) aber leider klappt es nicht. Sobald ein Umlaut in die DB eingegeben wird, werden alle weiteren Eingaben ab dem Umlaut nicht mehr in die DB geschrieben.

Das Problem tritt bei den neueren Servern/Systemen von Domainbox auf. Die gleiche Installation bei 1&1 hat letzte Woche super geklappt.
Was mach ich nun?
lg farina

farina
Beiträge: 216
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

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

Beitrag von farina » Mi 31. Okt 2012, 21:13

Ich kann das Problem näher definieren..

Es gibt dort Probleme mit den Seiten, wo keine Metaangaben eingefügt sind und diese automatisch generiert werden. Füge ich auf jede Seite eine description und keywords ein, wird die Seite im Frontend dargestellt. Mit Ausnahme von Umlauten, die werden nicht in den Metatags abgespeichert.

Dort, wo die Datei include.chain.content.createmetatags.php die Metatags automatisch generiert und in der Überschrift ein Umlaut vorkommt, bricht der Quelltext genau vor dem Umlaut ab.

Im Editor werden Umlaute übrigens durch die HTML-Zeichenfolgen dargestellt.Dort gibt es kein Problem.

Ich weiß leider nicht, wo ich weiter suchen soll. Irgendwo muss doch die Kodierung der Metatags definiert sein. In der include.chain.content.createmetatags.php finde ich da nichts, bin PHPmäig aber auch nicht so gut.

Gruß farina
Zuletzt geändert von farina am Di 6. Nov 2012, 09:34, insgesamt 1-mal geändert.

xmurrix
Beiträge: 2744
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

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

Beitrag von xmurrix » Mi 31. Okt 2012, 23:24

Gibt es eine Möglichkeit, sich das Projekt online näher anzusehen?

Wenn du magst, kannst du mir die Zugangsdaten per PM schicken und ich schaue mir das an.

Gruß
xmurrix

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

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

Beitrag von Faar » Mo 5. Nov 2012, 18:28

Ich habe vermutlich das gleiche Problem, es lässt sich kein Inhalt mehr editieren weil der Editor nicht mehr erscheint.
Als Meldung kommt dieses: [05-Nov-2012 17:42:05] PHP Warning: htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: charset `ANSI_X3.4-1968' not supported, assuming iso-8859-1 in contenido/includes/functions.php54.php on line 44

Auf einem anderen Server aber funktioniert es, nur auf einem tauchte bis jetzt dieses Problem auf.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

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

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

Beitrag von Faar » Mo 5. Nov 2012, 19:27

Ich habe festgestellt, dass das Problem mit dem Editor auch an speziellen Modulen liegen kann.
Die Installationen mit Standard-Modulen funktionieren aber diese eine mit modifizierten Text-Inhalts-Modulen nicht.
Nun habe ich dort einfach in ein Testtemplate die Standardmodule für Text und Überschrift eingebunden und schon funktioniert der Editor wieder.

Die PHP-Warnung erscheint trotzdem, bald im Sekundentakt. Irgend etwas wird dort mehrmals pro Minute aufgerufen, hat vielleicht eher mit dem Frontend zu tun.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

farina
Beiträge: 216
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

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

Beitrag von farina » Di 6. Nov 2012, 15:57

Die Warnung bezüglich des charset kam bei mir nicht mehr, als ich der Anleitung von xmurrix oben gefolgt bin. Beide Methoden haben dabei funktioniert.
Welche PHP-Version und welche MySql-Datenbank hast du ?
Gruß farina

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

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

Beitrag von Faar » Di 6. Nov 2012, 23:41

Ich weiß aus dem Stand nicht, welche php-Version und welche MySql-Version dort läuft. Das wird von einem Rechenzentrum gehostet, da komme ich nur unter Umständen mit Anmeldung dran.

Aber ich habe das eine Problem gelöst, die Seite geht wieder, es hatte wohl nichts mit der php-Warnung zu tun, sondern mit einer fehlenden Funktion.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 2744
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

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

Beitrag von xmurrix » Mi 7. Nov 2012, 00:09

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.

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

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

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

Beitrag von Faar » Mi 7. Nov 2012, 10:57

Hallo xmurrix,

wäre es möglich, so etwas z.B. als "if( isset($contenido_charset) )" in die Standard-Version aufzunehmen, so dass immer geprüft wird ob es eine spezielle Einstellung gibt und falls ja, diese benützt wird?
Das Problem mit der Updatefähigkeit ist nicht so trivial, wie ich eben am WoE wieder merken musste, als der von mir beschriebene Fehler auftauchte.
Wenn man z.B. fremde Projekte (wie immer ohne Dokumentation) übernimmt, weiß man nicht, was am Core geändert wurde und merkt es erst nach dem Update durch Fehlfunktionen.
Man muss auch davon ausgehen, dass man selbst nach 1, 2 oder 3 Jahren nicht mehr weiß, wo man im Core etwas geändert hat (Ich gehe jetzt mal nicht von Heimanwendern mit nur einer Contenido-Installation aus).

Und tatsächlich gibt es auch mal Projekte, bei denen man nicht den gewohnten Zugriff auf die DB und den Webspace hat und vieles (wie .htaccess oder php.ini Einstellungen) nur über Mitarbeiter aus einem RZ läuft.
Manche (bekannte große) Hoster ignorieren sogar geflissentlich die php.ini Einstellungen, wie man weiß :-)
Da macht es eine Contenido Installation natürlich schwieriger, wenn man umfassenderen Zugriff auf Server und DB benötigt.
Ich vermute auch mal, dass es in mancher Management Entscheidung heikel wird, wenn die Nebenkosten zu groß werden, denn viele fürchten laufende Pflegekosten mehr als einmalige höhere Kosten.
Aus dem Gesichtspunkt sollten solche Änderungen möglichst unbemerkt ablaufen, bezw. integrierbar sein.
Außerdem befürchte ich, dass viele gar nicht die Datenbank-Einstellungen machen können, weil sie nicht wissen wie es geht und wo es geht. Ich habe schon viele Datenbanken gesehen die noch die schwedischen Einstellungen hatten und Sonderzeichen im PHP-Programm umwandelten (weil sie utf-8 nicht kannten?).

VG,
Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 2744
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

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

Beitrag von xmurrix » Mi 7. Nov 2012, 11:15

Faar hat geschrieben:...wäre es möglich, so etwas z.B. als "if( isset($contenido_charset) )" in die Standard-Version aufzunehmen, so dass immer geprüft wird ob es eine spezielle Einstellung gibt und falls ja, diese benützt wird?...
Morgen Frank,

es gibt ein eigenes Ticket, das gestern neu angelegt wurde und genau dieses Problem behandelt. Ich gehe stark davon aus, dass das übernommen wird, vielleicht auch in etwas abgewandelter/erweiterter Form.

Gruß
Murat

farina
Beiträge: 216
Registriert: Fr 24. Okt 2003, 13:16
Wohnort: Düren
Kontaktdaten:

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

Beitrag von farina » Mi 7. Nov 2012, 11:41

Hier in aller Öffentlichkeit noch einmal ganz herzlichen Dank an xmurrix. Ohne ihn wäre ich da nie weiter gekommen.
Diese Lösung war für mich absolut hilfreich, da ich mit anderen Websites das gleiche Problem habe.
Gruß farina

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

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

Beitrag von Faar » Mi 19. Dez 2012, 17:26

Hi Murat,
Danke auch von mir nachträglich, gerade auch wegen eines aktuellen Projektes mit eben diesem CharakterSet Problem.
http://php.net/manual/en/ini.core.php#i ... lt-charset
Ich musste deswegen ein Rechen-Zentrum aufscheuchen weil ich keinen Zugriff auf die php.ini Einstellungen habe.

Die ini-Einstellung mit default_charset='UTF-8' funktioniert auch sehr gut (bis jetzt), muss also nicht "ISO-8859-1" sein.
Allerdings wird im Contenido-Backend immer noch der Button "Übersicht" als "�bersicht" angezeigt, sobald man utf-8 verwendet :wink:

Viele Grüße,
Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 2744
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

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

Beitrag von xmurrix » Fr 21. Dez 2012, 01:03

Hi Frank,
Faar hat geschrieben:...Die ini-Einstellung mit default_charset='UTF-8' funktioniert auch sehr gut (bis jetzt), muss also nicht "ISO-8859-1" sein.
Allerdings wird im Contenido-Backend immer noch der Button "Übersicht" als "�bersicht" angezeigt, sobald man utf-8 verwendet :wink: ...
guter Hinweis, danke dafür. Die Umstellung auf UTF-8 kann ich mir mal anschauen, oder jemand anderes aus dem Forum findet sich, der sich näher damit beschäftigen möchte.

Gruß
Murat

Gesperrt