iTob: UTF-8 Umlaut Problem

Hallo zusammen,
ich verwende in meiner MySQL Datenbank den Zeichensatz UTF-8. Es funktioniert eigentlich alles super mit diesem Zeichensatz bis auf die Umlaute. Wenn ich z.B. eine SQL-Abfrage wie folgt ausführe:

SELECT name FROM Kunden WHERE Kunden.name LIKE 'ü%'

bekomme ich nicht nur Kundennamen beginnend mit ö, sonder auch beginnend mit einem y. wie kommt dieses Problem zu stande und was kann ich dagegen machen?

wäre super wenn Ihr mir auf die Sprünge helfen könntet!

liebe grüße, iTob

  1. ich verwende in meiner MySQL Datenbank den Zeichensatz UTF-8.

    zeichencodierung - utf-8 ist eine zeichentransformationsmethode, kein zeichensatz - der zugehörige zeichensatz ist unicode

    wäre super wenn Ihr mir auf die Sprünge helfen könntet!

    du verwendest vermutlich nicht utf-8 als zeichencodierung in deiner datenbank sondern latin1_swedish_ci oder _cs alternativ könnte es natürlich auch sein, dass du utf8_swedish_ci verwendest - das ist aber afaik erst in mysql 6.x fix reinkompiliert, in den versionen davor in den standard-builds aber nicht enthalten

    1. du verwendest vermutlich nicht utf-8 als zeichencodierung in deiner datenbank sondern latin1_swedish_ci oder _cs alternativ könnte es natürlich auch sein, dass du utf8_swedish_ci verwendest - das ist aber afaik erst in mysql 6.x fix reinkompiliert, in den versionen davor in den standard-builds aber nicht enthalten

      Doch, in meinen Tabellen wird ganz sicher die Zeichencodierung UTF-8 verwendet.

      1. echo $begrüßung;

        Doch, in meinen Tabellen wird ganz sicher die Zeichencodierung UTF-8 verwendet.

        a) Wie definierst du "ganz sicher"? Oder anders: Wie überprüfst du das?

        b) Es gibt noch ein paar mehr Stellen als "Tabelle", an denen die korrekte Zeichenkodierungsangabe eine Rolle spielt. Relevant sind letzlich nur die Kodierungsangaben der Felder und die Kodierung auf der Verbindung zwischen einem Client und dem MySQL-Server. Hier müssen ausgehandelter oder Default-Wert mit der tatsächlich verwendeten Kodierung übereinstimmen.

        c) Für die Bewertung der Gleichheit oder der Unterschiedlichkeit von Buchstaben spielt die Kollation eine Rolle. Siehe beispielsweise: Examples of the Effect of Collation

        Allgemeiner Literaturtipp: MySQL-Handbuch-Kapitel Character Set Support

        echo "$verabschiedung $name";

  2. Tach.

    Wenn ich z.B. eine SQL-Abfrage wie folgt ausführe:

    SELECT name FROM Kunden WHERE Kunden.name LIKE 'ü%'

    bekomme ich nicht nur Kundennamen beginnend mit ö, sonder auch beginnend mit einem y. wie kommt dieses Problem zu stande und was kann ich dagegen machen?

    Du meinst ü, oder?

    Vermutlich benutzt Du die falsche Kollation.

    --
    Wenn es schwingt, ist es ein Filter – Oszillatoren würden so etwas nie tun.