schildi: mysql, umlaute, order

hallo,

wie bringe ich mysql dazu, umlaute korrekt (im bezug auf dt. spr.) in einem suchergebnis zu beachten?
also zb.

alter
hund
ostern
östern

statt, wie es bei mir bisher aussehen würde:

östern
alter
hund
ostern

gleiches gilt nat. für ä und ü.

danke für jede hilfe!

  1. Hallo,

    Deine Probleme beim Sortieren werden damit zusammenhängen, daß Deine MySQL-Datenbank nicht den deutschen ISO-Zeichensatz verwendet, sondern vermutlich den englischen.
    Hinweise findest Du u.a. hier: < http://dev.mysql.com/doc/mysql/en/german-character-set.html>.

    Falls Du phpMyAdmin zur Verwaltung Deiner Datenbank benutzt, dann wird auf der Startseite der verwendete Zeichensatz aber auch angezeigt und läßt sich anscheinend auch verändern (habe ich selbst noch nicht ausprobiert).

    Besser noch als der deutsche ISO-Zeichensatz ist meines Erachtens die Verwendung von UTF-8 (< http://dev.mysql.com/doc/mysql/en/charset-unicode.html>).

    Hoffe, das hilft Dir weiter.

    Ciao,
    Andreas

    1. hi,

      Falls Du phpMyAdmin zur Verwaltung Deiner Datenbank benutzt, dann wird auf der Startseite der verwendete Zeichensatz aber auch angezeigt und läßt sich anscheinend auch verändern

      das ist lediglich das charset, das PMA zur HTML-darstellung des interface verwendet.

      mit dem zeichensatz, mti dem die DB die daten speichert, hat das nichts zu tun.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Hallo wahsaga,

        das ist lediglich das charset, das PMA zur HTML-darstellung des interface verwendet.
        mit dem zeichensatz, mti dem die DB die daten speichert, hat das nichts zu tun.

        hoppla - ja, jetzt, wo Du es sagst....
        ;)

        Hast Du eigentlich schon einmal bei 'CREATE TABLE' einen individuellen Zeichensatz für die Tabelle eingestellt? So etwas ist wohl möglich - ich selber habe dies allerdings noch nicht ausprobiert.
        Das wäre ja für 'schildi' sicher die einfachste Lösung.

        Ciao,
        Andreas

        1. hi,

          danke erstmal!

          also, heisst also, es würde ausreichen, die betreffenden tabellen in utf8 anzulegen/neu abzuspeichern ?

          unter dem link auf mysql.com ist ein beispiel.

          CREATE TABLE [...]
          CHARACTER SET utf8

          scheint wohl alles zu sein?

          1. Hallo,

            CREATE TABLE [...]
            CHARACTER SET utf8

            scheint wohl alles zu sein?

            scheint so. Habe es - wie gesagt - selbst noch nicht ausprobiert.
            Kannst ja mal über Erfolg oder Mißerfolg berichten.

            Ciao,
            Andreas

            1. ok :)

              danke dir!

    2. Moin!

      Deine Probleme beim Sortieren werden damit zusammenhängen, daß Deine MySQL-Datenbank nicht den deutschen ISO-Zeichensatz verwendet, sondern vermutlich den englischen.

      Die Verwendung eines Zeichensatzes hat nichts mit der Verwendung einer Sortierreihenfolge zu tun.

      MySQL sortiert standardmäßig anhand des Bytewertes des Zeichens. Logischerweise muß ein Umlaut einen anderen Bytewert haben, als der Grundvokal, ansonsten wären die beiden Zeichen für die Textdarstellung nicht unterscheidbar. Bei der Sortierung hingegen sind Umlaut und Grundvokal als identisch anzusehen - zumindest in deutscher Sortierung. Die Franzosen beispielsweise, deren Zeichen sich ebenfalls in z.B. ISO-8859-1 befinden, sortieren wahrscheinlich ihr Alphabet ganz anders. Die Zeichensatzangabe ist daher kein ausschließliches Kriterium.

      Hinweise findest Du u.a. hier: http://dev.mysql.com/doc/mysql/en/german-character-set.html.

      Auf dieser Seite wird, allerdings eher am Rande, auch drauf eingegangen. Das sprachrichtige Sortieren läuft unter dem Begriff "Collation" - und es ist ab MySQL 4.1 verfügbar. Die für 4.0 notwendige Angabe "latin1_de" enthält die Sprachangabe DE, welche für das Sortieren zuständig ist, aber auch, es ist also keine reine Zeichensatzangabe.

      Besser noch als der deutsche ISO-Zeichensatz ist meines Erachtens die Verwendung von UTF-8 (http://dev.mysql.com/doc/mysql/en/charset-unicode.html).

      UTF-8 ist grundsätzlich eine gute Sache, weil man auf diese Weise sämtliche definierten Zeichen speichern und verarbeiten kann, aber dieser Unicode hilft einem nicht beim Sortieren. Im Gegenteil wird die ganze Sache noch komplizierter, da man sich ja auf den gesamten Zeichenraum stützen muß. Mit der Angabe der gewünschten "Collation" sollte das aber kein großes Problem sein. UTF-8 gibts aber ja auch erst ab Version 4.1 - dürfte mit ein Grund sein, warum im Vergleich zu 4.0 Zeichensatz und Sortierordnung getrennt wurden.

      • Sven Rautenberg