Moin!
post: ä ü ö ->Inhalt der $_POST['titel']
titel: ä ü ö
Das häufige auftreten von à deutet sehr stark darauf hin, dass deine POST-Eingangsdaten UTF-8-codiert sind.
Dahingehend solltest du mal testen. Denn logischerweise kannst du UTF-8 nicht so einfach in Entities wandeln.
Schritt 1 wäre also, dass du dir mal jedes einzelne Byte des Strings ausgeben läßt. Wenn du nur "ä ö ü" dort drin hast, dann muß die Stringlänge (strlen()) 5 betragen. Wenn UTF-8 im Spiel ist, ist jeder Umlaut zwei Byte groß, und die Länge beträgt 8.
htmlentities verändert den String also in dieser Weise. Bloß warum tut es das? In anderen Anwendungen funktioniert das gut.
htmlentities() macht nur das, was definitionsgemäß draufsteht: Buchstaben der Codierung ISO-8859-1 in ihre Entities wandeln. Selbst das Eurozeichen aus ISO-8859-15 wird leider nicht in â¬, sondern in ¤ gewandelt und ergibt so im Browser einen kleinen Kreis mit 4 Strahlen drumrum.
Eventuell kommst du um eine selbstdefinierte Funktion nicht herum.
Andererseits würde ich niemals Entities in eine Datenbank speichern, sondern die immer erst nach dem Auslesen aus der DB umwandeln. Du mußt eben nur aufpassen, dass du die Zeichencodierungen nicht durcheinanderbringst.
- Sven Rautenberg