[Python-de] urllib.quote(unicode)
"Martin v. Löwis"
martin at v.loewis.de
Don Apr 6 09:59:13 CEST 2006
Jens Diemer wrote:
> Es geht allerdings , wenn ich
> urllib.quote(abs_path.encode("utf-8"))
> mache... Ist das normal?
Jein. URLs sind (bedauerlicherweise) Bytestrings und nicht lesbarer
Text (*); dass man sie in HTML integriert hat, war unsauber (genauer:
es war unsauber, dass man URLs als Bytestrings definiert hat).
urllib.quote unterstützt nur byte strings. Das encoding eines URLs
muss der Webserver selber wissen: er hat den URL ausgegeben, er muss
die Resource auflösen können...
Das Problem wird langfristig von IRIs gelöst (Internationalized Resource
Identifiers); bei denen handelt es sich um Text. Wie man IRIs in Python
und Apache integriert, ist noch offen.
Kurz: Denk Dir ein Encoding für Deine URLs aus, und verwende das
einheitlich. UTF-8 ist eine naheliegende Wahl.
Ciao,
Martin
(*) eine andere Interpretation ist, dass URLs nur ASCII unterstützen