Index: xml_serializer.py
===================================================================
--- xml_serializer.py	(revision 5152)
+++ xml_serializer.py	(working copy)
@@ -68,7 +68,7 @@
         # serializer base class). 
         if getattr(obj, field.name) is not None:
             value = self.get_string_value(obj, field)
-            self.xml.characters(str(value))
+            self.xml.characters(value)
         else:
             self.xml.addQuickElement("None")
 
@@ -226,4 +226,4 @@
             inner_text.extend(getInnerText(child))
         else:
            pass
-    return "".join(inner_text)
\ No newline at end of file
+    return "".join(inner_text)
Index: base.py
===================================================================
--- base.py	(revision 5152)
+++ base.py	(working copy)
@@ -7,6 +7,7 @@
 except ImportError:
     from StringIO import StringIO
 from django.db import models
+from django.conf import settings
 
 class SerializationError(Exception):
     """Something bad happened during serialization."""
@@ -59,8 +60,12 @@
             value = getattr(obj, "get_%s_url" % field.name, lambda: None)()
         else:
             value = field.flatten_data(follow=None, obj=obj).get(field.name, "")
-        return str(value)
 
+        if isinstance(value, str):
+            return value.decode(settings.DEFAULT_CHARSET)
+        else:
+            return unicode(value)
+
     def start_serialization(self):
         """
         Called when serializing of the queryset starts.
