Only pass unicode multipart fieldnames to urllib3.
diff --git a/requests/models.py b/requests/models.py
index 55716307fb..db898bca44 100644
--- a/requests/models.py
+++ b/requests/models.py
@@ -105,7 +105,7 @@ def _encode_files(files, data):
             for v in val:
                 if v is not None:
                     new_fields.append(
-                        (field.encode('utf-8') if isinstance(field, str) else field,
+                        (field.decode('utf-8') if isinstance(field, bytes) else field,
                          v.encode('utf-8') if isinstance(v, str) else v))
 
         for (k, v) in files:
diff --git a/test_requests.py b/test_requests.py
index aabce29b2b..2b5f231cf0 100644
--- a/test_requests.py
+++ b/test_requests.py
@@ -342,6 +342,16 @@ def test_unicode_multipart_post(self):
                           files={'file': ('test_requests.py', open(__file__, 'rb'))})
         self.assertEqual(r.status_code, 200)
 
+    def test_unicode_multipart_post_fieldnames(self):
+        r = requests.Request(method='POST',
+                             url=httpbin('post'),
+                             data={'stuff'.encode('utf-8'): 'elixr'},
+                             files={'file': ('test_requests.py',
+                                             open(__file__, 'rb'))})
+        prep = r.prepare()
+        self.assertTrue(b'name="stuff"' in prep.body)
+        self.assertFalse(b'name="b\'stuff\'"' in prep.body)
+
     def test_custom_content_type(self):
         r = requests.post(httpbin('post'),
                           data={'stuff': json.dumps({'a': 123})},

`filepost.encode_multipart_formdata` says all fieldnames should be unicode and currently that is not the case - https://github.com/shazow/urllib3/blob/master/urllib3/filepost.py#L55 - since requests encodes to bytes here - https://github.com/kennethreitz/requests/blob/master/requests/models.py#L108.

Discovered after plenty of fun in https://github.com/requests/requests-oauthlib/pull/43. This should fix https://github.com/kennethreitz/requests/issues/1371.

Tested in 2.6, 2.7 and 3.3.

cc @Lukasa, @michaelhelmick, @sigmavirus24
