Ich weiß zwar nicht, wie du die Daten auf Linux empfängst, aber so wie du sie darstellst, erhältst du die Zeichen bereits in UTF-8 dekodiert.
Sonderzeichen sind dann meist 2 Bytes lang, es ist also korrekt.
(ü = "ü")

Du musst also nur noch von UTF-8 wieder in deine aktuelle Codepage umkodieren.
Es muss da für deine Programmiersprache entsprechende Routinen geben (ggf. Java?).

Was die "vielen anderen Zeichen" angeht, so könnte es sein, dass der Inhalt deiner Variablen vor dem ODBC-Zugriff immer gelöscht werden muss. Es scheint ein Rest stehenzubleiben.

Der Sourcecode wäre nicht uninteressant.