To urlencode a querystring or form data in python you can use the urllib module:
use urllib # you have to pass in a dictionary print urllib.urlencode({'id':'100', 'name':'john smith'}) # then you get 'id=100&name=john+smith'
Urlencoding Unicode and UTF8 Values
#this works fine print urllib.urlencode({name:'José'}) #you have to be careful with unicode strings # this will throw an error: print urllib.urlencode({name:u'José'}) # UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in # position 11: ordinal not in range #since the default ascii conversion can't handle the 'é', # you have to be explicit in what charset you are using print urllib.urlencode({'name':u'José'.encode('utf8')})
Additional Info:
Python Doc for urllib module
Unicode Primer
July 18th, 2010 at 8:42 am
Thanks for the shortest one. I always believe If somebody able to understand a code, they always come up with a much simplest one. I’m happy that someone other than me can able to understand my script :).
February 28th, 2011 at 11:58 am
Thanks! I can’t understand why Python still has these issues with unicode…