sqlite3 und Umlaute im Pfad

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
bords0
User
Beiträge: 168
Registriert: Mittwoch 4. Juli 2007, 20:40

sqlite3 und Umlaute im Pfad

Beitragvon bords0 » Mittwoch 4. Juli 2007, 21:52

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: sqlite3 und Umlaute im Pfad

Beitragvon gerold » Mittwoch 4. Juli 2007, 23:14

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
bords0
User
Beiträge: 168
Registriert: Mittwoch 4. Juli 2007, 20:40

Re: sqlite3 und Umlaute im Pfad

Beitragvon bords0 » Donnerstag 5. Juli 2007, 09:06

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder