Om nah hoo pez nyeetz, Erhard!
htmlspecialchars() sollte reichen, im Handbuch findest du auch, wie du mit ungültigen Zeichen umgehen kannst, was aus meiner Sicht nur die Symptome beseitigt, nicht die Ursache.
Bei einer konsequenten Verwendung von UTF-8 sollte es keine ungültigen Zeichen geben.
Matthias