Also was hier
IMHO einer Erleuchtung im Wege steht ist der Mangel an zusätzlichen Informationen. Woher kommt der String, was für ein System, ggf. Quell- und Zielcodepages usw. Ein \xc4 und \x80 sagt ja erstmal nichts weiter aus als den Bytewert 196 und 128. Ohne Kenntnis der Codepage kommt man damit nicht weit.
128 lässt sich nach Windows-1251, Windows-1252 und ISO-8859-1 als "€" auflösen, 196 nach ISO-8859-1 als "Ä". Nach CP437 und CP850 kämen dann "├" und "Ç" raus. In Windows-1250 hättest du "Д" und "Ђ". Und so weiter.
Heißt: Um das richtig nach
Unicode übersetzen zu können brauchst du die Information, welche 8-Bit-Codepage der Text hatte, BEVOR er in UTF-8 konvertiert wurde.