diff --git a/novaclient/v1_1/base.py b/novaclient/v1_1/base.py
index 43e54cd9d..85d7141fa 100644
--- a/novaclient/v1_1/base.py
+++ b/novaclient/v1_1/base.py
@@ -72,6 +72,8 @@ class BootingManagerWithFind(base.ManagerWithFind):
         if userdata:
             if hasattr(userdata, 'read'):
                 userdata = userdata.read()
+            elif isinstance(userdata, unicode):
+                userdata = userdata.encode('utf-8')
             body["server"]["user_data"] = base64.b64encode(userdata)
         if meta:
             body["server"]["metadata"] = meta
diff --git a/tests/v1_1/test_servers.py b/tests/v1_1/test_servers.py
index 61115144c..c4c530591 100644
--- a/tests/v1_1/test_servers.py
+++ b/tests/v1_1/test_servers.py
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
 import StringIO
 
 from novaclient import exceptions
@@ -59,6 +61,38 @@ class ServersTest(utils.TestCase):
         cs.assert_called('POST', '/servers')
         self.assertTrue(isinstance(s, servers.Server))
 
+    def test_create_server_userdata_unicode(self):
+        s = cs.servers.create(
+            name="My server",
+            image=1,
+            flavor=1,
+            meta={'foo': 'bar'},
+            userdata=u'こんにちは',
+            key_name="fakekey",
+            files={
+                '/etc/passwd': 'some data',                 # a file
+                '/tmp/foo.txt': StringIO.StringIO('data'),   # a stream
+            },
+        )
+        cs.assert_called('POST', '/servers')
+        self.assertTrue(isinstance(s, servers.Server))
+
+    def test_create_server_userdata_utf8(self):
+        s = cs.servers.create(
+            name="My server",
+            image=1,
+            flavor=1,
+            meta={'foo': 'bar'},
+            userdata='こんにちは',
+            key_name="fakekey",
+            files={
+                '/etc/passwd': 'some data',                 # a file
+                '/tmp/foo.txt': StringIO.StringIO('data'),   # a stream
+            },
+        )
+        cs.assert_called('POST', '/servers')
+        self.assertTrue(isinstance(s, servers.Server))
+
     def test_update_server(self):
         s = cs.servers.get(1234)