LOWER() und UTF-8?

Hallo Forum,
steht gerade ein bisschen auf dem Schlauch. In meiner UTF-8 Datenbank habe ich Namen mit Umlauten gespeichert. Wenn ich nun allerdings nach den Namen Suche treten seltsame Effekte auf.

select UPPER(nachname) from person;
=> aus Köhler wird KöHLER

select LOWER(nachname) from person;
=> aus KÖHLER wird kÖhler

meine Suchen über die Webseite sind da natürlich nicht sehr erfreut.

Nach ein bisschen suchen im Forum hab ich einen Thread gefunden indem ähnliches diskutiert wurde, allerdings in Verbindung mit Reg. Exp.
Wenn ich das richtig gelesen habe, handelte es sich da um einen Bug.

Ist das generell ein Bug, oder wo ist hier mein Fehler bei dem Ganzen?

Das Ganze läuft auf WinXP, mit 8.2.1
Soll aber produktiv auf einem linux Server laufen. Denke mal ich habe irgendwo einen generellen Denkfehler oder eine Wissenslücke. Für jede Hilfe dankbar.

Gruss

Daniel

Hier mal ein paar Infos zur DB:

SHOW client_encoding => UTF8
SHOW server_encoding => UTF8
show LC_COLLATE => C
show LC_CTYPE => C

hmmm… nach ettlichen Versuchen und einigem lesen, habe ich anscheinden den begrabenen Hund gefunden.

LC_COLLATE
LC_CTYPE

stehen nun nach einem initdb auf German_German.1252.

Sieht soweit nun gut aus. Wenn trotzdem noch jemand Tips und Hinweise hat,
immer nur her damit. Vielleicht hab ich ja immer noch irgendwas übersehen was sich später rächt.

Was ich auch nicht ganz verstanden habe. Wenn ich nun eine mehrsprachige Anwendung habe, in der jeder seine Daten entsprechend finden will, bin ich mit diesen Locales ja auch wieder aufgeschmissen, weil das ja nun anscheinend nur bei Deutschen Umlauten funktioniert. Wenn jetzt jemand in weiss Gott welcher Sprache was sucht geht das wieder von vorne los.

Wo ist da mein Denkfehler?

In diesem Sinne