Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL gibt Zeilen mit Umlauten nicht aus, trotz korrektem Charset

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL gibt Zeilen mit Umlauten nicht aus, trotz korrektem Charset

    Hallo zusammen

    Ich weiß, das Charset-Probleme gerade Anfänger oft haben, weil sie nicht ausreichend googeln und selber testen. Aber das habe ich gemacht. Ich habe mich jetzt mehrere Stunden damit beschäftigt und verstehe noch immer nicht mal den Ansatz zur Lösung.

    Was ich tun will:
    Mittels scandir() lese ich Verzeichnisse aus und schreibe alle Dateien und Unterverzeichnisse in eine MySQL-Datenbank. Das funktioniert bestens.

    Das Problem:
    Es werden zwar erfolgreich alle Dateien in die DB geschrieben, diejenigen mit Umlauten kann ich aber nicht ausgeben. Der Query zeigt immer 0 Resultate.
    Ersetze ich das in einer Zeile stehende ä, ö oder ü per Tastatur mit demselben Buchstaben, funktioniert das plötzlich.
    Das heißt: ö ist nicht gleich ö, ä nicht gleich ä und ö nicht gleich ö. Es betrifft bisher nur Umlaute.




    Meine Lösungsversuche:
    Mir war klar: Da stimmt was mit dem Charset nicht.
    • PHP & HTML-Header ist auf UTF-8 gesetzt.
    • Der MySQL-Charset ist auch auf UTF8 gesetzt.
    • Ich habe es mit SET NAMES versucht.
    • Ich habe es damit versucht, erst jeden String in UTF-8 zu konvertieren.
    • Ich habe den ursprünglichen Charset des Dateinamens mit mb_detect_encoding() überprüft, der ebenfalls UTF-8 ist.
    Das sind die Dinge, die ich so finde im Internet - auch beispielsweise hier im Forum. Es kann natürlich sein, dass ich was übersehen habe.

  • #2
    Zitat von siliciumcarbid Beitrag anzeigen
    Ersetze ich das in einer Zeile stehende ä, ö oder ü per Tastatur mit demselben Buchstaben, funktioniert das plötzlich.
    Schau dir mal in einem Hex-Editor an, welche Bytes dein Dateisystem für die Umlaute verwendet.

    Zitat von siliciumcarbid Beitrag anzeigen
    Das heißt: ö ist nicht gleich ö, ä nicht gleich ä und ö nicht gleich ö.
    Willkommen bei Unicode.

    Kommentar


    • #3
      Nebenbei:
      Das Like hat da nichts zu suchen. Woher kommt diese Unart? Was soll es bedeuten?
      Es liefert keine "so ähnlichen" Ergebnisse und wie sollte es auch bzw. wer sagt, was " so ähnlich" ist?
      Im Zweifel erhälst Du je nach Suchbegriff nicht erwartete Ergebnisse.
      Ersetze das Like durch ein =

      Kommentar


      • #4
        Code:
        SELECT `filename`
        FROM `mediacenter_files`
        WHERE `filename` like "%phönix%"
        liefert das Treffer?

        Der MySQL-Charset ist auch auf UTF8 gesetzt.
        Nicht behaupten, zeige den Code dazu.


        Kommentar

        Lädt...
        X