Seite 1 von 1
urllib.urlencode() Problem?
Verfasst: Mittwoch 15. August 2007, 17:46
von jui
Hi!
Code: Alles auswählen
import urllib
url = 'http%3A%2F%2Fton7.tonline.apa.net%2Fhome%2Fstart.php%3F%26s%3D5a5891a5defc43b84e04032a3852f49b%26domain_from%3Dwww.teamchef.at%26s%3D5a5891a5defc43b84e04032a3852f49b'
print url
print urllib.urlencode([('wdygt', url)])
Warum macht urllib.urlencode() aus jedem '%' im String ein '%25'?
Kann ich das irgendwie ausschalten, bzw. warum modifiziert urlencode den String auf diese Weise?
Ich benutze Python 2.5.1 auf XP.
lg Jui
Verfasst: Mittwoch 15. August 2007, 18:27
von rayo
Hi
Weil urlencode die Daten noch quotet, mach vorher ein urllib.unquote(url) dann sollte es stimmen.
Gruss
Verfasst: Mittwoch 15. August 2007, 19:01
von jui
rayo hat geschrieben:Hi
Weil urlencode die Daten noch quotet, mach vorher ein urllib.unquote(url) dann sollte es stimmen.
Gruss
jo wenn manns nacher macht stimmts wieder.
Wenn ich einfach url.replace('%25', '%') geht es ebenfalls.
Aber was bringt diese 'quoten' und warum wird aus ein '%' ein '%25' das wäre interressant?
Verfasst: Mittwoch 15. August 2007, 19:58
von BlackJack
In URLs dürfen nur bestimmte Zeichen vorkommen und andere nicht. Zum Beispiel sind Leerzeichen verboten. Um trotzdem alle Zeichen in einer URL unterbringen zu können kann man sie auch als Hexadezimalwert mit einem % davor angeben. Damit man auch ein % angeben kann muss man das natürlich ebenfalls auf diese Weise kodieren.
Verfasst: Donnerstag 16. August 2007, 22:00
von jui
BlackJack hat geschrieben:In URLs dürfen nur bestimmte Zeichen vorkommen und andere nicht. Zum Beispiel sind Leerzeichen verboten. Um trotzdem alle Zeichen in einer URL unterbringen zu können kann man sie auch als Hexadezimalwert mit einem % davor angeben. Damit man auch ein % angeben kann muss man das natürlich ebenfalls auf diese Weise kodieren.
OK. Danke!
Verfasst: Freitag 17. August 2007, 08:13
von BlackJack
Wobei ich im Beispiel gerade sehe: Die URL ist ja bereits kodiert, bist Du sicher, dass Du das noch einmal machen willst!?
Verfasst: Freitag 17. August 2007, 12:29
von jui
BlackJack hat geschrieben:Wobei ich im Beispiel gerade sehe: Die URL ist ja bereits kodiert, bist Du sicher, dass Du das noch einmal machen willst!?
Im richtigen Programm will ich noch mehr Parameter in die URL kodieren, nicht nur den einen wie im Beispiel.
Jetzt hab ich das "quoten" verstanden darum hab ich den Code jetzt angepasst.
Code: Alles auswählen
reqdata = urllib.urlencode([('xxx', 'xxx'),
('xxx', 'xxx'),
('wdygt', urllib.unquote(url[4][6:])),
('submit.x', '0'),
('submit.y', '0')])