[Python-de] urllib.quote(unicode)

Jens Diemer python_gmane at jensdiemer.de
Don Apr 6 09:38:30 CEST 2006


Martin v. Löwis schrieb:
> Offenbar läuft Apache mit LANG=C. Es gibt zwei Möglichkeiten:
> 
> 1. Du änderst die locale, in der Apache läuft, z.B. indem Du
>    in /etc/init.d/apache2 den Text
> 
>    ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"
> 
>    durch
> 
>    ENV="env -i LANG=de_DE.UTF-8 PATH=/usr/local/bin:/usr/bin:/bin"
> 
>    ersetzt (besser würde man ENV in /etc/default/apache2 setzen)
> 
> 2. Du änderst LANG nur für das CGI-Skript, etwa mittels SetEnv:
> 
>    http://httpd.apache.org/docs/2.0/mod/mod_env.html#passenv

Der erste "Patch" funktioniert! Die zweite Variante hat spontan nicht 
funktioniert...

Danke! Nun bin ich ein Stück weiter ;)

Nun sieht es so aus:
"""
sys.stdin.encoding: None
sys.stdout.encoding: None
sys.stderr.encoding: None
sys.getdefaultencoding(): ascii
sys.getfilesystemencoding(): UTF-8
locale.getpreferredencoding(): UTF-8
"""

Nun hab ich endlich alle Dateinamen in unicode...

Aber es taucht direkt das nächste Problem auf :(
urllib.quote() wirft einen KeyError:
"""
   File "./FilesystemUnicodeTest.py", line 81, in filesystemTest
     print urllib.quote(abs_path)
   File "/usr/lib/python2.4/urllib.py", line 1107, in quote
     res = map(safe_map.__getitem__, s)
KeyError: u'\xf6'
"""
Er stolpert über ein "ö"...

Es geht allerdings , wenn ich
	urllib.quote(abs_path.encode("utf-8"))
mache... Ist das normal?




-- 
Mfg.

Jens Diemer


----
CMS in pure Python CGI: http://www.pylucid.org