Seite 1 von 1

sqlite3 und Umlaute im Pfad

Verfasst: Mittwoch 4. Juli 2007, 21:52
von bords0
sqlite3.connect entfernt Umlaute anscheinend einfach. Hat man zum Beispiel ein (Unter-)Verzeichnis Jörg, so wird daraus ein Jrg - das klappt dann natürlich nicht...

Code: Alles auswählen

>>> ================================ RESTART ================================
>>> import os
>>> import sqlite3
>>> pth = "C:\projects\dump"
>>> os.listdir(pth)
['J\xf6rg']
>>> pth_db = os.path.join(pth, os.listdir(pth)[0],"my.db")
>>> pth_db
'C:\\projects\\dump\\J\xf6rg\\my.db'
>>> c = sqlite3.connect(pth_db)

Traceback (most recent call last):
  File "<pyshell#46>", line 1, in <module>
    c = sqlite3.connect(pth_db)
OperationalError: unable to open database file
>>> os.mkdir(os.path.join(pth,"Jrg"))
>>> c = sqlite3.connect(pth_db)
>>> 
Oder mache ich was falsch? Kann man irgendwie Pfade mit Umlauten verwenden?

Danke,
bords

Re: sqlite3 und Umlaute im Pfad

Verfasst: Mittwoch 4. Juli 2007, 23:14
von gerold
bords0 hat geschrieben:Kann man irgendwie Pfade mit Umlauten verwenden?
Hallo bords!

Willkommen im Python-Forum!

Ja, man kann. Übergib den Pfad als UTF-8-String: http://www.sqlite.org/cvstrac/tktview?tn=2320,15

mfg
Gerold
:-)

Re: sqlite3 und Umlaute im Pfad

Verfasst: Donnerstag 5. Juli 2007, 09:06
von bords0
gerold hat geschrieben:
bords0 hat geschrieben:Kann man irgendwie Pfade mit Umlauten verwenden?
Übergib den Pfad als UTF-8-String: http://www.sqlite.org/cvstrac/tktview?tn=2320,15
Ah, das hatte ich nicht gefunden. Außerdem bin ich wohl zu blöd, um mit den encodings richtig umzugehen :?

Um aus dem, was os.path.listdir (und ähnliches) mir gibt, einen UTF-8-String zu machen, habe ich die Zeile

Code: Alles auswählen

pth_db = pth_db.decode("mbcs").encode("utf-8")
verwendet - und es klappt.

Danke!

Falls die Zeile irgendwie einfacher oder portabler schreibbar ist, wäre ich für einen Hinweis dankbar :)

Gruß
Bords