Beitrag
von oxpus » So 22.Mai, 2016 13:00
Noch mal rekaputiliert:
Die neuen oder neu geänderten Einträge werden so oder so nicht korrekt angezeigt?
Zunächst einmal die Fakten:
Die Seite wird als UTF-8-kodiert angezeigt.
Damit sollten alle Inhalte, die dargestellt oder auch über ein Formular abgesendet werden, als utf-8-kodierte Zeichen in der Datenbank landen.
Jetzt sollte man also nicht noch einmal mit htmlentities und utf8_encode die Zeichenkodierung ändern, da ja bereits utf-8 vorliegt.
Wenn das Speichern ohne vorherige Konvertierung der Zeichen nicht sauber klappt, sollte man zunächst dort mit utf8_decode oder utf8_encode die Zeichen vor dem Speichern in der Datenbank ändern, damit diese dort auch korrekt ankommen.
Denn auch wenn die Tabelle auf utf8 eingestellt ist, heisst das noch lange nicht, dass die Inhalte auch korrekt unterstützt werden. Das kommt nämlich dann auch noch u. a. auf den Treiber des Datenbankservers und dem Zeichensatz des Datenbankschemas und diversen anderen Dingen an.
Aber zurück zum Thema:
Wie werden die Inhalte im Formular zum ändern angezeigt?
Dort bereits mit den gesamten Sonderzeichen?
Und was passiert, wenn du den Text dann erst einmal wieder manuell änderst?
Wird der dann weiterhin "verstümmelt", wenn du ihn das nächste Mal anzeigen lässt oder bearbeiten willst?
Wie gesagt:
Die Webseite wird als utf8 angezeigt, daher sollte zunächst keine weitere Konvertierung vorgenommen werden.
Das betrifft aber dann auch nur alle neuen oder neu gespeicherten Texte, nicht bereits gespeicherte Texte, die vielleicht noch nicht in UTF-8 vorliegen!
Die hatte ich ja bereits einmal versucht anzupassen, aber dennoch muss zumindest jeder neue Eintrag schon mal sauber laufen.
Entferne daher alles, was irgendwas konvertiert. Also wie oben genannt ohne htmlentities und utf8_encode im Eingabeformular, wenn wenn dort schon Mist reinkommt, wird es hinten nicht besser, wenn die Daten übernommen und gespeichert werden sollen.
Im Formular die Texte also nicht konvertieren. Wenn würde ich das eher zum Speichern in die Datenbank machen (also utf8_decode), damit die Texte dann doch erst mal als latin-1 gespeichert werden.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!