Umlaute in Dateinamen finden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
BlackJack

Das war "deutsch". Du musst Dir über den Unterschied zwischen den Typen `unicode` und `str` klar werden und en- bzw. dekodieren bedeutet, also was da jeweils reingeht und was rauskommt.
fon77
User
Beiträge: 17
Registriert: Freitag 10. April 2009, 20:58

Yay, es funktioniert! Es musste tatsächlich nur das n.decode("utf-8") durch n ersetzt werden. Läuft wie geschmiert!

Danke für die Hilfe!!
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Hö? Du versuchst doch n zuerst mit einem normalen unicode() in Unicode umzuwandeln. Das funktioniert nur für ASCII. Die Fehlermeldung da deutet auf einen Fehler im unicode() Aufruf hin. unicodedata.normalize gibt eine andere Fehlermeldung bei Fehlern. unicode.decode(<Bytestring Kodierung>) hat keine Wirkung, nur str.decode tut etwas (nämlich nach einem Dekodierungsformat Dinge umwandeln, das muss nicht unbedingt str -> unicode sein, zb geht auch str.decode("bz2"), um bzip2 zu dekodieren - gut). Insofern musst du n einmal dekodieren mit dem korrektem Encoding (sieht nach iso-8859-15 aus).
BlackJack

@str1442: Das mit dem `unicode()` ohne Kodierungsangabe passt schon. `n` ist ja kein `str` sondern ein `QString` der selbst "Unicode" ist, aber eben in einer C++-GUI-Bibliothek die eine andere API hat als die Methoden, die `unicode` zur Verfügung stellt.
Antworten