Tach!
Wenn ich anschließend den Inhalt von $node2->nodeValue mit var_dump ausgebe, kommt schon Umlaut-Müll heraus.
Beim Ausgeben findet wieder eine Interpretation statt, denn das ausgebende System muss ja aus den Daten entnehmen, welche Zeichen es auf die Ausgabe zu schreiben hat. Deswegen ist es bei Kodierungsproblemen ratsam, auch diese Fehlerquelle auszuschließen. Das kann man tun, indem man sich nicht das Ergebnis der (Fehl)interpretation sondern erstmal die Daten selbst anschaut. Nimm echo urlencode() und lass das var_dump() in dem Fall mal weg. Das nimmst du gleich nach dem file_get_contents().
ABer mal so gefragt: VOR dem file_get_contents habe ich doch gar keinen String, den ich mit urlencode() ausgeben könnte, also keine "reinen" Daten?