Amarok + MySQL + UTF-8

  • Habe prinzipiell alle Systeme (Gentoo) komplett auf UTF-8 umgestellt, funktioniert auch fein. Keine Probleme mit MySQL, PHP, Apache oder sonstwo. Amarok hat auf dem Server eine MySQL-DB und speichert die Collection dort ab, Files werden vom selben Server via NFS gemountet. Umlaute funktionieren auch überall. Wenn ich allerdings händisch in die DB schaue, sehe ich keine Umlaute, sondern 2 Byte, scheint also alles double-encoded zu sein. Genauso sieht's natürlich aus, wenn ich per Apache mit PHP auf die DB zugreifen möchte. Jemand eine Ahnung, wieso die Umlaute so kaputt in der DB landen? Ich hätte sie gerne richtig in UTF-8 drin und auch richtig in Amarok dargestellt dann.

  • for kurzem ist mir mal folgende zeile untergekommen:

    Code
    CREATE DATABASE foobar DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

    vielleicht kannst du die attribute nachtraeglich setzen?

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Wow, Volltreffer. Hab's zumindest mal mit einer minimalen neuen Collection probiert, das geht einwandfrei.
    Attribute nachträglich setzen - das würde gehen? Ich hab' ja jetzt Mist in der DB, müsste wohl alles konvertieren. Wenn ich mich zurückerinnere, was ich für Scherereien bei Dateinamen hatte, was double-encoded betrifft, lasse ich lieber Amarok paar Stunden DB bauen ;)
    Habe das ganze in die my.cnf geworfen, da ich das eigentlich für alle Datenbanken möchte:

    Code
    default-collation=utf8_unicode_ci


    unicode statt general deswegen, weil ich eigentlich 's' und 'ß' nicht gleichsetzen möchte und zu faul war, nachzusehen, was sonst ander ist.
    Anscheinend kann man das aber auch beim Kompilieren mitgeben statt in der my.cnf rumzupfuschen. Naja, das Gentoo Use-Flag "unicode" setzt da nix, wie's aussieht, irgendwie nicht so toll, finde ich. Oder hab' ich irgendwo was falsch konfiguriert?

  • Hast du auch deine Locales richtig gesetzt? de_AT.UTF-8 oder en_IE.UTF-8 oder was auch immer? Und kann es sein, dass du MySQL mit der latin1-USE-flag gebaut hast?

    Restrain the specimen!

  • Ja, Locales sind überall auf de_AT.utf8, mit latin1 ist nicht mehr gebaut, alles mit unicode Support. Funktioniert auch prinzipiell für andere Datenbanken perfekt, nur Amarok hat Probleme gemacht, ist aber jetzt eh gelöst...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!