[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