Danke dir dedlfix,
Das glaube ich eher nicht, oder du hast das Archiv dieses Forums ausgelassen. Denn dann müsste ich in der Vergangenheit zu oft solche Fragen unverständlich beantwortet haben. :-)
Du hast recht ich hab leider mehr gegoogled statt hier im Forum direkt danach zu suchen. *duck*
strtolower() und ucfirst() wollte ich eigentlich deswegen einsetzen da ich nicht wollte das Benutzer sich zum Beispiel SKiLOEr oder ähnlich nennen können aber ich habe nun festgestellt das dadurch auch Sonderzeichen evtl. falsch umgesetzt werden und habe mich davon nun entfernt.
Danke für den Tipp mit mysql_real_escape_string(), schein wirklich besser zu funktionieren.
Die 'Kollation' der datenbankspalte in die der Benutzernamen geschrieben wird ist 'latin1_general_ci'
Hatte hier im Forum gelesen das es zwischen 'latin1_general_ci' und UTF-8 keine Komplikationen geben soll, auch als ich die Datenbank auf UTF-8 umgestellt hatte bekam ich immer das gleiche falsche Ergebnis.
Vermutlich hast du dabei, wie so viele Fragende mit ähnlichen Problemen, nicht beachtet, dem Server mitzuteilen, in welcher Kodierung du dich mit ihm unterhalten möchtest. Dieser Schritt ist so wichtig, dass er bereits auf der Einstiegsseite des MySQL-Handbuchkapitels Character Set Support erwähnt wird. (Stichwort SET NAMES)
Ich ähm *KOPFDICK* habs einfach vergessen gehabt und eigentlich ist dies auch der einzigste Grund warum mir Sonderzeichen falsch abgespeichert und ausgegeben wurden.
Für eine Ausgabe im HTML-Kontext reicht es, htmlspecialchars() zu benutzen. HTML-Entities oder NCR brauchst du nur dann, wenn du Zeichen verwendest, die in der gewählten Kodierung nicht vorkommen, was aber bei UTF-8 nicht der Fall sein kann.
Danke dir! Jetzt muss ich mir darum auch keinen Kopf mehr machen.
Schlusswort:
Funktioniert nun bestens!
Vielen Dank für die schnelle Hilfe dedlfix!