ilch Forum » Ilch Clan 1.1 » Installation und Upgrades » Umlautproblematik: Fehlerbehebung?

Geschlossen
  1. #1
    User Pic
    sMo.licious Mitglied
    Registriert seit
    16.05.2008
    Beiträge
    2
    Beitragswertungen
    0 Beitragspunkte
    Hallo Community,

    ich melde mich hier zu Wort, da auch ich das Problem mit der falschen Darstellung der Sonderzeichen habe. Da ich mit diesem Thread versuchen möchte das Problem zu beheben, habe ich mich dazu entschieden einen neuen zu starten und nicht auf einen bestehenden zu antworten.

    Zunächst einmal zum Problem: Wie kommt es zustande, dass die Sonderzeichen falsch oder durch ein "?" dargestellt werden?

    Dieses Problem liegt lediglich am Zeichensatz. MySQL-Server ab version 4.0 arbeiten Intern mit dem UTF-8 Zeichensatz. Das Bedeutet, wenn nicht anders vereinbart, möchte der MySQL-Server IMMER die UTF-8 Zeichenkodierung zum verarbeiten bekommen und liefert auch nur diese zurück. Wie gesagt, wenn nicht anders vereinbart. Es besteht für den Programmierer durchaus die Möglichkeit beim Verbindungsaufbau zur MySQL-Datenbank den Befehl (Bsp.:) "SET NAMES latin1" zu senden. Ab diesem Moment haben sich das Skript und der MySQL-Server "auf eine Sprache geeinigt". Logischerweise erwartet und sendet der MySQL-Server von diesem Moment an alle Zeichen in latin1 kodiert.

    In diesem Thread werde ich als beispiel meinen eigenen MySQL-Server und das ilchClan-Skript v1.1K nehmen.

    Der MySQL-Server läuft mit folgenden Einstellungen:

    character_set_client = utf8
    character_set_connection = utf8
    character_set_system = utf8

    Damit ist sichergestellt, dass Transaktionen in beide Richtungen mit der UTF-8 Kodierung ablaufen.

    Ein wichtiges Thema noch, bevor ich auf die Installation und die auftretenden Fehler eingehe:

    Die Kollation einer Datenbank hat nicht im geringsten etwas mit der Darstellung der Zeichen zu tun. Es handelt sich dabei
    lediglich um die Sorttierreihenfolge beim anfordern von Daten. Wenn euch also jemand sagt Ihr sollt die Kollation der
    Datenbank ändern um den Fehler zu umgehen, könnt Ihr diesen Hinweis einfach lächelnd überlesen! Das wird euren Fehler
    nicht beheben, weil es das nicht kann!

    Jetzt zum ilchClan-Skript. Ich lade das Skript in Version 1.1K herunter und installiere es gemäß der Anleitung. Bis auf den Satz "Das Clanscript f?r jeden!" wird alles korrekt angezeigt. Erstelle ich jetzt einen neuen Newseintrag über den Admin-Bereich, werden die Sonderzeichen auf der Seite falsch dargestellt (äöü). Da ich weiß, dass dieser Fehler nur eine Ursache haben kann, bin ich in dem Skript auf Fehlersuche gegangen.

    Zunächst habe ich beim Verbindungsaufbau zur MySQL-Datenbank die Funktion mysql_pconnect() durch mysql_connect() ersetzt.
    mysql_pconnect() baut eine persistente Verbindung zum MySQL-Server auf:

    1. Wüsste ich nicht wieso das in diesem Skript nötig sein sollte.
    (Falls der Programmierer mir die Frage beantworten könnte, wär ich dankbar!)

    2. Ist es, wie es im ilchClan-Skript passiert, nicht möglich eine persistente Verbindung per mysql_close() zu beenden.

    Nach diesem Schritt habe ich unterhalb des Verbindungsaufbaus ein

    mysql_query('SET NAMES utf8');

    eingesetzt. Somit ist nun absolut sichergestellt, dass beide Seiten die "gleiche Sprache sprechen".

    Erstelle ich nun einen Eintrag über den Admin-Bereich, wird dieser im Admin-Bereich und in der Datenbank richtig angezeigt, somit sendet das Skript scheinbar in UTF-8 Kodierung an die Datenbank, soweit so gut.

    Bei der Ausgabe sieht es leider anders aus, dort wird, je nach Bereich, Kauderwelsch angezeigt. Die Überschriften der Menüs zeigen keine Umlaute, die Menü-Links aber schon. Die Überschrift der News zeigen die Umlaute korrekt, der Textinhalt jedoch nicht. Woran kann das liegen?

    Das meta-tag

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    kann daran auch nicht schuld sein. Beide Meta-Tags stehen auf UTF-8 und der HTTP-Header zeigt auch UTF-8 als Zeichenkodierung an.

    Es ist quasi das Komplette Skript und auch der MySQL-Server auf UTF-8 abgestimmt. Habe ich etwas vergessen, was vielleicht der Programmierer weiß?

    Ich habe keine Lust ein eigenes ClanSkript zu schreiben. Warum sollte ich das Rad neu erfinden wenn es jemand anderes schon gut gemacht hat. Das Skript ist zwar an der einen oder anderen Stelle Verbesserungswürdig und bietet u.U. die Möglichkeit für SQL-Injections aber das ist keine große Sache. Da helfe ich lieber hier mit beim Verbessern als mich alleine auf die Suche zu machen.

    Ich würde mich freuen wenn jemand noch ein paar Konstruktive Tipps geben könnte. Ich habe jetzt schon 2 Tage in die Suche nach der Lösung für dieses Problem gesteckt. Es wird Zeit das sich etwas bewegt...^^

    Schönen Gruß

    sMo.licious

    p.s. Und wehe es kommt mir einer mit "Benutz die SuFu"... Ich arbeite schon seit jahren mit Web-Anwendungen und kenne dieses Problem schon von zahlreichen anderen Web-Applikationen. Dort war es meistens durch einen Versionswechsel der MySQL-Server oder mit Wordpad bearbeitete Backups aufgetreten. Hier ist das aber nicht der Fall...
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Installation und Upgrades

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten