diff --git a/requests/core.py b/requests/core.py index bb62fcee..e7e013e6 100644 --- a/requests/core.py +++ b/requests/core.py @@ -69,13 +69,16 @@ class Request(object): self.headers = headers self.files = files self.method = method - self.data = data + + self.data = {} + for (k, v) in data.items(): + self.data.update({ + k.encode('utf-8') if k.__class__ is unicode else k: \ + v.encode('utf-8') if v.__class__ is unicode else v + }) socket.setdefaulttimeout(timeout) - for (k, v) in self.data.iteritems(): - self.data[k] = v.encode('utf-8') - # url encode data if it's a dict if hasattr(data, 'items'): self._enc_data = urllib.urlencode(self.data) diff --git a/test_requests.py b/test_requests.py index c73803c0..89b69acd 100755 --- a/test_requests.py +++ b/test_requests.py @@ -141,6 +141,8 @@ class RequestsTestSuite(unittest.TestCase): def test_unicode_get(self): requests.get('http://google.com', params={'foo': u'føø'}) + requests.get('http://google.com', params={u'føø': u'føø'}) + requests.get('http://google.com', params={'føø': 'føø'}) requests.get('http://google.com', params={'foo': u'foo'}) requests.get('http://google.com/ø', params={'foo': u'foo'})