• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Suche Gästebuch welches in utf-8 kodiert ist

Mo3b

Mitglied
Hi,
ich bin auf der Suche nach einem kleinen Gästebuch welches sich leicht in die eigene Webseite integrieren lässt. Ich habe mal icybook getestet und das hat mir eigentlich ganz gut gefallen. Dummerweise ist das mit ISO 8859-1 kodiert.

Ich habe bereits versuht die Kodierung zu ändern, leider ohne Erfolg.

Hättet ihr ein Gästebuch für mich oder wisst ihr wie ich die Kodierung ändern könnte?

Mfg Mo3b
 
Hallo,

da steht doch bloss in 2 Dateien ISO und die DB musst Logisch in utf-8 machen oder übersehe ich da was wo du hengen geblieben bist.

Ich test das mal gleich, nach Futtern :O).

Cheffchen
 
Die 2 mal Iso in utf-8 umschreiben ist schnell gemacht. Die Datenbank hab ich gerade nicht zur Hand, das schau gleich nochmal nach.

Vielleicht verstehe ich das nicht ganz, aber ich muss doch noch alle Dateien konertieren? Im Prinzip bin ich da hängengeblieben. Unter Linux gibts ja da iconv dafür. Mit nem kleinem Script kann das auch mit ganzen Ordnern gefüttert werden, bis jetzt wie gesagt ohne Erfolg ;)

Mfg Mo3b
 
Notepad++ bietet eine Einstellung, die bestimmt ob eine Datei beim Öffnen im Editor in einen bestimmten Zeichensatz konvertiert werden muss. Du könntest alle Dateien markieren, öffnen und wieder schließen.
 
Hallo,

nee!?
was hat dat mit Linux zu tun?
index.php und admin.php das ISO in UTF-8 ändern.
Die Datenbank als utf-8 Anlegen die man zu installation brauch.
Fertig.

Gerade genau so gemacht und funzt.

Jetzt könnte man noch die paar codierungsfehler ändern, Intern und fußzeile "Kostenloses G�stebuch powered by" ist aber recht übersichtlich.


EDIT:
Notepad++ bietet eine Einstellung, die bestimmt ob eine Datei beim Öffnen im Editor in einen bestimmten Zeichensatz konvertiert werden muss. Du könntest alle Dateien markieren, öffnen und wieder schließen.
Besser nicht, wer weiss was wo alles geändert wird.

Cheffchen
 
Jetzt könnte man noch die paar codierungsfehler ändern, Intern und fußzeile "Kostenloses G�stebuch powered by" ist aber recht übersichtlich.
Grundsätzlich sind vier Schritte für eine Zeichensatz-Umwandlung nötig:
  • Zeichensatz der HTTP-Response einstellen (in PHP mit der header()-Funktion)
  • Alle Dateien intern konvertieren (z.B. mit Notepad++, können nicht viele Editoren)
  • Datenbank-Charset einstellen (z.B. mit PHPMyAdmin oder im MySQL-Config-File)
  • Datenbank-Verbindung ändern ( z.B. mit PHP-Funktion mysql_set_charset())
Habe leider IcyBook nicht zur Hand, aber all das sollte getan werden, um die meisten Probleme zu vermeiden.
 
Danke für die Antworten!

Ich habe jetzt sämtliche meta-Angaben in UTF-8 umgewandelt. Außerdem habe ich jetzt alle Dateien mit iconv umkodiert. (Einzeln habe ich es jetzt hinbekommen)

Damit scheint wirklich alles zu fukntionieren! Die Datenbank habe ich mir jetzt nicht angeschaut, da ich mein Passwort für meinen Hoster erst wieder suchen muss...

Das hätte ich mir jetzt schwieriger vorgestellt.

@ CHeffchen: DUch die Umkodierung treten genau diese Probleme bei mir nicht auf.

Mfg Mo3b
 
Hallo Mo3B,

da brauchst bloss in den lang ordner gehen und bei de einfach mal durchschauen, wenige sind nicht in utf8 die einfach ändern. ä => ä
Außerdem habe ich jetzt alle Dateien mit iconv umkodiert.
Das verstehe ich immer noch nicht? wieso das? welche alle daten? was für ein Sinn hat das?

Cheffchen
 
Gleich vorweg, ich bin auf diesen Gebiet nicht wirklich ein Experte ;)

Jedes php/Html Dokument bzw. eigentliches jedes Textdokument besitzt einen Zeichensatzkonvertierung. Wenn ich nun eine neues php-Dokument mit ISO Konvertierung erstelle, dann kann ich einfach ä schreiben und das wird mir richtig ausgegeben. Im UTF-Standard wird dieses Zeichen aber (intern) anders gespeichert. Wenn ich nun dieses Dokument als UTF interpretiere, so kann der Browser mit dem ZEichen nix mehr anfangen.

Ich habe nun erstmals alle Dokumente konvertiert, so dass ich Umlaute direkt schreiben kann: öäüß.

Soweit ich das verstehe, kannst du deutsche Umlaute so schreiben wie du das getan hast:

PHP:
ä


Sämtliche Zeichen hiervon sind sowohl in UTF-8 als auch ISO-8859-1 vorhanden. Der Vorteil ist jetzt, dass obwohl du eine falsche Kodierung angibst doch das richtige rauskommt, da die meisten Zeichen ja gleich kodiert sind!
Der Browser interpretiert netterweise
PHP:
ä
als ä und somit geht das.

Mfg Mo3b
 
Die Dateikonvertierung hat diesen Grund:
Der Apache-Server sendet alle Dateien in dem Zeichensatz, in dem sie abgespeichert wurden.
Wenn du in den entsprechenden Dateien die Kürzel des Zeichensatzes änderst, veränderst du nur das, was in der HTTP-Header-Antwort steht, und nicht den Zeichensatz der Datei die gesendet wird.

Sprich, der Browser 'denkt', es liegt UTF-8 vor, tatsächlich ist es aber eine ISO. -> Umlaute und andere sonderzeichen werden falsch verwertet.

Gruß
 
Hack für Icybook 1.61:

In ./index.php und ./admin.php jeweils ganz oben (vor der session_start();-Zeile) diese Befehle einfügen:

PHP:
header('Content-Type: text/html; charset=UTF-8');

// Convert $_POST data from UTF-8 to ISO-8859-1 (not lossless)
array_walk_recursive($_POST, function (&$item, $key) {
    $item = mb_convert_encoding($item, 'ISO-8859-1', 'UTF-8');
});

mb_internal_encoding('ISO-8859-1');
mb_http_output('UTF-8') || die('Could not change output encoding');
ob_start('mb_output_handler');

Auf die header-Zeile kann verzichtet werden, wenn der korrekte Header bereits anderweitig gesetzt wird. Etwa in einer .htaccess-Datei:

Code:
AddDefaultCharset UTF-8

Da nun POST-Daten auch als UTF-8 kodiert empfangen werden, müssen diese (vermutlich) nach ISO-8859-1 umgeschrieben werden, weil das Icybook intern ja mit ISO-8859-1 arbeitet. Dabei könnten unerwünschte Seiteneffekte auftreten, ich gehe aber erstmal nicht davon aus.

Das Umstellen des internen Codes auf UTF-8 wäre vielleicht einen Feature-Request an Icy wert. Es ist schon eine Einschränkung, dass das Gästebuch nur in ISO-8859-1 enthaltene Zeichen unterstützt. Nicht enthalten ist etwa auch das „€“-Zeichen. Das wird zwar vom Icybook 1.61 standardmäßig korrekt angezeigt, aber das ist ein „Fehler“ der Browser.

Wer es ganz sauber haben möchte: Die Zeile

HTML:
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

müsste jeweils auch auf UTF-8 umgeschrieben werden.
 
Zuletzt bearbeitet:

Neueste Beiträge

Zurück
Oben