Guest AndyMein Problem ist, dass Texte im Text Sachen gemischt vorkommen können. Also etwas in der Art "Wären sie bereit dafür? Warum älter aussehen als Sie sich fühlen."
Daraus wird dann "Wären sie bereit dafür? Warum älter aussehen als Sie sich fühlen."
Das hat doch nichts damit zutun, ob Du die Entities in dezimaler, hexadezimaler oder String-Codierung dargestellt werden.
Dein Problem ist, dass in Deinem Input manche Umlaute als Entities codiert sind, andere nativ enthalten sind. Wenn Du jetzt einen Filter drüberlaufen lässt, der Umlaute und andere "kritische" Zeichen in Entities codieren soll, hält dieser die schon vorhandenen Entities für normale Text-Strings und escaped das Ampersand.
Lösung: Erstmal alle Enteties in normale Unicode-Zeichen wandeln. Bereits vorhandene native Umlaute werden dadurch nicht verändert, aber "ä" wird in "ä" umgewandelt. Anschließend hast Du die Umlaute einheitlich in Unicode und kannst sie wieder zu "ä" oder "ä " escapen.