Hallo.
Habe ein kleines Problem mit den Sonderzeichen in der Datenbank (in dem Fall speziell die Umlaute).
User können auf einer Seite (utf8-codiert) Texteingaben machen. Dabei sind Umlaute erlaubt. Die Änderungen werden über ein utf8-Perlscript mit einer utf-8 Datenverbindung in einem utf8-unicode-Feld in der Datenbank abgespeichert. Dummerweise speichert diese nun aber alle Sonderzeichen Marke "ü" statt "ü". An und für sich wäre das ja kein Problem, hätten wir uns hier nicht aus sehr wichtigen Performancegründen für char sondern für varchar als Feldtyp entschieden. Es sind also 15 Zeichen für den zu speichernden Namen von der Webseite aus zulässig. Begrenze ich nun die Feldlänge auf 15 Zeichen, passen nur 7,5 Umlaute in das Feld. Beliebige Untermengen sind natürlich genauso problematisch. Verwendet beispielsweise irgendwer "12345678901234ü" als Namen, so bleibt davon nach der Speicherung "12345678901234Ã" übrig, weil der zweite Teil vom ü im Datenbankfeld keinen Platz mehr findet. "üüüüüüüü" endet als "üüüüüüüÃ" weil der das durch den fehlenden Platz komplett zerhaut.
Um das Problem zu umgehen habe ich momentan einfach die Große des Datenbankfeldes gegenüber der maximalen Eingabegröße verdoppelt und das funktioniert natürlich auch. Allerdings macht das so keinen sehr professionellen Eindruck. Gibt es da eine andere Lösung? Die Datenbank kann über phpmyadmin ja auch Umlaute direkt abspeichern und muß nicht diese Krickelkrackel stattdessen speichern. Wie bekomme ich die da rein?