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.
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.
Kommentar