UnicodeDecodeError: Mal ja, mal nein

28/01/2008 - 22:15 von Michael Schmarck | Report spam
Hallo.

Ich habe hier ein Python Programm, welches die f-spot photos.db per
pysqlite einliest und dann "entsprechendes" macht. Rufe ich das Programm
auf einem Debian Server auf, so erhalte ich folgende Fehlermeldung:

DEBUG:cherrypy.error.4147713484:[28/Jan/2008:21:54:57] getting thumbnail for 3627: filename=/home/Ausflüge/Mainau.jpg, version=None
DEBUG:cherrypy.error.4147713484:[28/Jan/2008:21:54:57] HTTP Traceback (most recent call last):
File "/home/benutzer/.software/python-2.5.1/lib/python2.5/site-packages/cherrypy/_cprequest.py", line 551, in respond
cherrypy.response.body = self.handler()
File "/home/benutzer/.software/python-2.5.1/lib/python2.5/site-packages/cherrypy/_cpdispatch.py", line 24, in __call__
return self.callable(*self.args, **self.kwargs)
File "/home/benutzer/Bilder/pennave/src/images.py", line 275, in thumbnail
return self.getThumbnail(p, self.thumbnailPhotoSize, cherrypy.config["thumbnailPath"], version=version)
File "/home/benutzer/Bilder/pennave/src/images.py", line 90, in getThumbnail
filename_utf8 = codecs.encode(filename, "UTF-8")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 56: ordinal not in range(128)

Rufe ich das *UNMODIFIZIERTE* Programm auf einem Gentoo Server auf,
so bekomme ich diese Fehlermeldung *NICHT*.

Python 2.5.1 habe ich auf dem Debian System komplett von Hand
installiert, indem ich

./configure --prefix=/home/benutzer/.software/python-2.5.1 \

aufgerufen habe.

Danach habe ich pysqlite durch Aufruf von

python2.5 setup.py install

installiert. /home/benutzer/.software/python-2.5.1/bin ist im $PATH
und somit ist python2.5 auch im PATH; python2.5 bezieht sich ganz
sicher auf mein selbstinstalliertes Python 2.5.1 (Debian bringt
2.4.x mit).

sqlite3 (3.5.4) habe ich auch selber installiert:

LANG=de_DE.UTF-8 ./configure --prefix=$HME/.software/sqlite-3.5.4 && \
LANG=de_DE.UTF-8 make && LANG=de_DE.UTF-8 make install

Mir ist unverstàndlich, warum das gleiche Programm mit der gleichen
Datenbank auf dem Gentoo Server funktioniert, auf dem Debian Server
aber einen UnicodeDecodeError liefert.

Woran liegt das? Wie hàtte ich Python @ Debian wohl bauen müssen,
so das ich diesen Fehler eben nicht bekommen hàtte?

Danke,

Michael Schmarck
Our houseplants have a good sense of humous.
 

Lesen sie die antworten

#1 Diez B. Roggisch
28/01/2008 - 23:27 | Warnen spam
Michael Schmarck schrieb:
Hallo.

Ich habe hier ein Python Programm, welches die f-spot photos.db per
pysqlite einliest und dann "entsprechendes" macht. Rufe ich das Programm
auf einem Debian Server auf, so erhalte ich folgende Fehlermeldung:

DEBUG:cherrypy.error.4147713484:[28/Jan/2008:21:54:57] getting thumbnail for 3627: filename=/home/Ausflüge/Mainau.jpg, version=None
DEBUG:cherrypy.error.4147713484:[28/Jan/2008:21:54:57] HTTP Traceback (most recent call last):
File "/home/benutzer/.software/python-2.5.1/lib/python2.5/site-packages/cherrypy/_cprequest.py", line 551, in respond
cherrypy.response.body = self.handler()
File "/home/benutzer/.software/python-2.5.1/lib/python2.5/site-packages/cherrypy/_cpdispatch.py", line 24, in __call__
return self.callable(*self.args, **self.kwargs)
File "/home/benutzer/Bilder/pennave/src/images.py", line 275, in thumbnail
return self.getThumbnail(p, self.thumbnailPhotoSize, cherrypy.config["thumbnailPath"], version=version)
File "/home/benutzer/Bilder/pennave/src/images.py", line 90, in getThumbnail
filename_utf8 = codecs.encode(filename, "UTF-8")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 56: ordinal not in range(128)

Rufe ich das *UNMODIFIZIERTE* Programm auf einem Gentoo Server auf,
so bekomme ich diese Fehlermeldung *NICHT*.

Python 2.5.1 habe ich auf dem Debian System komplett von Hand
installiert, indem ich

./configure --prefix=/home/benutzer/.software/python-2.5.1 \

aufgerufen habe.

Danach habe ich pysqlite durch Aufruf von

python2.5 setup.py install

installiert. /home/benutzer/.software/python-2.5.1/bin ist im $PATH
und somit ist python2.5 auch im PATH; python2.5 bezieht sich ganz
sicher auf mein selbstinstalliertes Python 2.5.1 (Debian bringt
2.4.x mit).

sqlite3 (3.5.4) habe ich auch selber installiert:

LANG=de_DE.UTF-8 ./configure --prefix=$HME/.software/sqlite-3.5.4 && \
LANG=de_DE.UTF-8 make && LANG=de_DE.UTF-8 make install

Mir ist unverstàndlich, warum das gleiche Programm mit der gleichen
Datenbank auf dem Gentoo Server funktioniert, auf dem Debian Server
aber einen UnicodeDecodeError liefert.

Woran liegt das? Wie hàtte ich Python @ Debian wohl bauen müssen,
so das ich diesen Fehler eben nicht bekommen hàtte?



Ich denke nicht das Python an sich hier das Problem ist. Sondern der
filename. Gib dir den doch mal mittels

print repr(filename)

auf beiden Systemen aus. Und schau, wie genau du den bekommst.

Ich bin mir ziemlich sicher das Problem ist der filename im filesystem.
Denn unter Unix/Linux ist afaik fuer internationale filenamen kein
standard definiert - man "sollte" utf-8 verwenden, aber du hast
wahrscheinlich latin1, und dann knallt das ü in Ausflüge.

Diez

Ähnliche fragen