Blob Blame History Raw
Index: pywbem-20130827/cim_obj.py
===================================================================
--- pywbem-20130827.orig/cim_obj.py
+++ pywbem-20130827/cim_obj.py
@@ -391,7 +391,7 @@ class CIMProperty(object):
             if value is not None:
                 if value:
                     if self.embedded_object is not None:
-                        value = [v.tocimxml().toxml() for v in value]
+                        value = [v.tocimxml().toxml(encoding='utf-8') for v in value]
                 value = VALUE_ARRAY([VALUE(atomic_to_cim_xml(v)) for v in value])
 
             return PROPERTY_ARRAY(
@@ -422,7 +422,7 @@ class CIMProperty(object):
             value = self.value
             if value is not None:
                 if self.embedded_object is not None:
-                    value = value.tocimxml().toxml()
+                    value = value.tocimxml().toxml(encoding='utf-8')
                 else:
                     value = atomic_to_cim_xml(value)
                 value = VALUE(value)
@@ -599,9 +599,9 @@ class CIMInstanceName(object):
                     # long or float
                     _type = 'numeric'
                     value = str(kb[1])
-                elif type(kb[1]) == str or type(kb[1]) == unicode:
+                elif isinstance(kb[1], basestring):
                     _type = 'string'
-                    value = kb[1]
+                    value = kb[1].decode('utf-8') if isinstance(kb[1], str) else kb[1]
                 else:
                     raise TypeError(
                         'Invalid keybinding type for keybinding ' '%s: %s' % (kb[0],`type(kb[1])`))
@@ -1341,7 +1341,8 @@ def tocimxml(value):
 
     if isinstance(value, cim_types.CIMType) or \
            type(value) in (str, unicode, int):
-        return cim_xml.VALUE(unicode(value))
+        value = value.decode('utf-8') if isinstance(value, str) else unicode(value)
+        return cim_xml.VALUE(value)
 
     if isinstance(value, bool):
         if value:
Index: pywbem-20130827/cim_operations.py
===================================================================
--- pywbem-20130827.orig/cim_operations.py
+++ pywbem-20130827/cim_operations.py
@@ -165,8 +165,8 @@ class WBEMConnection(object):
             '2.0', '2.0')
 
         if self.debug:
-            self.last_raw_request = req_xml.toxml()
-            self.last_request = req_xml.toprettyxml(indent='  ')
+            self.last_raw_request = req_xml.toxml(encoding='utf-8')
+            self.last_request = req_xml.toprettyxml(indent='  ', encoding='utf-8')
 
             self.last_reply = None
             self.last_raw_reply = None
@@ -174,7 +174,7 @@ class WBEMConnection(object):
         # Get XML response
 
         try:
-            resp_xml = cim_http.wbem_request(self.url, req_xml.toxml(),
+            resp_xml = cim_http.wbem_request(self.url, req_xml.toxml(encoding='utf-8'),
                                              self.creds, headers,
                                              x509 = self.x509,
                                              verify_callback = self.verify_callback,
@@ -192,7 +192,7 @@ class WBEMConnection(object):
         reply_dom = minidom.parseString(resp_xml)
 
         if self.debug:
-            self.last_reply = reply_dom.toprettyxml(indent='  ')
+            self.last_reply = reply_dom.toprettyxml(indent='  ', encoding='utf-8')
             self.last_raw_reply = resp_xml
 
         # Parse response
@@ -292,7 +292,7 @@ class WBEMConnection(object):
             if isinstance(obj, (CIMClassName, CIMInstanceName)):
                 return cim_xml.VALUE_REFERENCE(obj.tocimxml())
             if isinstance(obj, (CIMClass, CIMInstance)):
-                return cim_xml.VALUE(obj.tocimxml().toxml())
+                return cim_xml.VALUE(obj.tocimxml().toxml(encoding='utf-8'))
             if isinstance(obj, list):
                 if obj and isinstance(obj[0], (CIMClassName, CIMInstanceName)):
                     return cim_xml.VALUE_REFARRAY([paramvalue(x) for x in obj])
@@ -328,12 +328,12 @@ class WBEMConnection(object):
             '2.0', '2.0')
 
         if self.debug:
-            self.last_request = req_xml.toprettyxml(indent='  ')
+            self.last_request = req_xml.toprettyxml(indent='  ', encoding='utf-8')
 
         # Get XML response
 
         try:
-            resp_xml = cim_http.wbem_request(self.url, req_xml.toxml(),
+            resp_xml = cim_http.wbem_request(self.url, req_xml.toxml(encoding='utf-8'),
                                              self.creds, headers,
                                              x509 = self.x509,
                                              verify_callback = self.verify_callback,
Index: pywbem-20130827/cim_types.py
===================================================================
--- pywbem-20130827.orig/cim_types.py
+++ pywbem-20130827/cim_types.py
@@ -258,5 +258,5 @@ def atomic_to_cim_xml(obj):
     elif cimtype(obj) == 'real64':
         return u'%.16E' % obj
     else:
-        return unicode(obj)
+        return obj.decode('utf-8') if isinstance(obj, str) else unicode(obj)