﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
20809	Python 2.7.3 Django 1.5.1 QueryDict.urlencode returns unicode	stargrave@…	nobody	"QueryDict's urlencode methods always returns unicode strings:
{{{
>>> from django.http.request import QueryDict
>>> QueryDict('foo=bar').urlencode()
u'foo=bar'
}}}
I suppose it is not expected behaviour at all. Django 1.4.x returns str-s.

After looking at urlencode's source code, force_bytes should translate all unicode-s to str-s. But the problem lies in the very beginning of that file in `from __future__ import unicode_literals` that forces """"-s to be unicode-s. So anyway '&'.join() will result in u'&'.join(), as '%s=%s' one too.
{{{
if safe:
    safe = force_bytes(safe, self.encoding)
    encode = lambda k, v: '%s=%s' % ((quote(k, safe), quote(v, safe)))
else:
    encode = lambda k, v: urlencode({k: v})
for k, list_ in self.lists():
    k = force_bytes(k, self.encoding)
    output.extend([encode(k, force_bytes(v, self.encoding))
                   for v in list_])
return '&'.join(output)
}}}"	Bug	closed	HTTP handling	1.5	Normal	worksforme			Unreviewed	0	0	0	0	0	0
