[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