Problem mit Umlauten

Hallo!

Das klassische, deutsche Problem beim Programmieren: äöü!
Um das noch genauer zu spezifizieren:
Wir haben in Verbindung mit einer Webseite eine mySQL-Datenbank. Hier werden - nebst anderem - Namen von Personen abgespeichert. Wenn man nur per Suche z.B. einen „Müller“ sucht, wird dieser nicht gefunden, da das „ü“ in irgendwelchen kryptischen Zeichen in der Datenbank liegt. Problem hier ist vermutlich auch das Betriebssystem. Funktionierend getestet ist unsere Programmierung mit Datenbanken auf Windows und Linux Rechnern; die Datenbank unseres Webseitenbetreibers liegt aber auf einem Solarisserver. Dieser kommt damit anscheinend gar nicht klar, dass da jemand solche „komischen Buchstaben“ eingeben will.
Neue Einträge per PHP wurden schon mit allem (un)möglichem versucht um zu codieren, damit es korrekt abgelegt wird, klappt aber so nicht.

Damit die Fragestellung in kurz:
Wie kann man äöü in einer mySQL-Datenbank - vorhanden auf einem Solarisserver - korrekt ablegen?
Natürlich sind im Fall der Fälle auch mögliche Workaround-Ideen interessant.

danke schonmal
Geisterkarle

Umgehungsmöglichkeit : Normalisieren (nicht das Datenmodell)

  • In eine Tabelle die Namen / Vornamen etc mit ihren Fundstellen (Bezug auf die Ursprungstabelle) normalisiert (phonetisch) ablegen, d.h. ü–>ue, ö–>oe etc (Nicht zu vergessen weitere Sonderzeichen, oder é,à etc), also aus Müller wird Mueller…
  • Am besten über die Prozedur, welche die Daten in die Ursprungstabelle ablegt.
  • Anschliessend die Suche auf die neue „Namenstabelle“ umleiten
  • Sonderfälle wie „Meier-Müller“ etc beachten
  • Luxus : Daten als Token abspeichern (1:n Beziehung) : Also aus Müller wird in der Namenstabelle Mueller, Mue, uel, ell,lle,lle–> Du kannst auch nach Müll* oder *ller suchen (Muss natürlich in der Suche auscodiert werden

Gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Das klassische, deutsche Problem beim Programmieren: äöü!
Um das noch genauer zu spezifizieren:
Wir haben in Verbindung mit einer Webseite eine
mySQL-Datenbank. Hier werden - nebst anderem - Namen von
Personen abgespeichert. Wenn man nur per Suche z.B. einen
„Müller“ sucht, wird dieser nicht gefunden, da das „ü“ in
irgendwelchen kryptischen Zeichen in der Datenbank liegt.

Da hilft nur, eine Datenbank zu nehmen, die mit Unicode umgehen kann (und die weiss, dass ä zu einem Wort gehört und nicht wörter trennt), und darauf achten, dass alle Daten in der Datenbank die gleiche Kodierung verwendet, und dass die Datenbank diese Kodierung kennt.

Problem hier ist vermutlich auch das Betriebssystem.
Funktionierend getestet ist unsere Programmierung mit
Datenbanken auf Windows und Linux Rechnern; die Datenbank
unseres Webseitenbetreibers liegt aber auf einem
Solarisserver. Dieser kommt damit anscheinend gar nicht klar,
dass da jemand solche „komischen Buchstaben“ eingeben will.

Welche Datenbank ist das denn? Und ist sie auf „euren“ Rechnern in der gleichen Version wie auf dem Produktivserver?

Neue Einträge per PHP wurden schon mit allem (un)möglichem
versucht um zu codieren, damit es korrekt abgelegt wird,
klappt aber so nicht.

Das lässt den Verdacht aufkommen, dass ihr relativ planlos vorgeht geht. Wenn das der Fall ist, solltet ihr euch über Charsets und Unicode schlau lesen. Und wie PHP damit umgeht (falls es das überhaupt tut…)

Damit die Fragestellung in kurz:
Wie kann man äöü in einer mySQL-Datenbank - vorhanden auf
einem Solarisserver - korrekt ablegen?
Natürlich sind im Fall der Fälle auch mögliche
Workaround-Ideen interessant.

Von Workarounds würde ich in diesem Fall abraten, weil sie letztendlich immer das Leben komplizierter machen als eine richtige Lösung, und zu Datenverlust führen könnten, wenn sie nicht richtig gemacht werden.

Grüße,
Moritz