def utf8_urlencode(params):
""" A urlencode that handles special characters better than the
urllib.urlencode function.
"""
return u'&'.join([u'%s=%s' % (utf8_quote(key), utf8_quote(value))
for key, value in params.iteritems()])
default_safe = u'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-'
def utf8_quote(s, safe=u''):
safe = default_safe + safe
urlenc = u''
for c in s.encode(u'utf-8').decode(u'iso-8859-1'):
if c in safe:
urlenc += c
else:
urlenc += u'%%%2x' % ord(c)
return urlenc