Tach!
Weil PHP hier eine Macke hat!
echo htmlspecialchars($_page['body'], ENT_QUOTES, 'ISO-8859-1');
Man muss für htmlspecialchars neuerdings eine Codierung angeben, damit es zuverlässig arbeitet.
Oh, das ist ja Mist. Die eigentlich interessanten Zeichen sind alle im ASCII-Bereich. Der ist bei UTF-8 und ISO-8859-1 derselbe. htmlspecialchars() stört sich allem Anschein nach an der nicht korrekten Kodierung der Zeichen, die es gar nicht zu verändern gilt. Es nimmt also UTF-8 an, bekommt eine kaputte Zeichensequenz und stellt ohne ein Wort zu sagen die Arbeit ein und verwirft obendrein noch das bisherige Zwischenergebnis. - Die Beschreibung im Handbuch bestätigt diese Annahme und es gibt noch ein paar Flags, mit denen man sich aus dem Regen zurückziehen und unter die Traufe begeben kann (ENT_IGNORE, ENT_SUBSTITUTE, ENT_DISALLOWED).
Andererseits muss man zugeben, dass die obige Vereinfachung nur auf ISO-8859-x und UTF-8 und noch ein paar weitere Kodierungen zutrifft. PHP muss aber auch die wirklich kritischen Zweifelsfälle berücksichtigen, und da ist die Ausgabe eines Leerstrings die sicherheitstechnisch wohl beste Alternative, wenn es auch für den Anwender durch die schweigende Ersetzung recht unangenehm ist, solche Fehler zu suchen.
Warum ist mir das noch nicht aufgefallen? Vermutlich, weil ich nicht mehr mit veralteten Kodierungen zu tun gehabt habe.
dedlfix.