diff --git a/sleekxmpp/plugins/xep_0009/binding.py b/sleekxmpp/plugins/xep_0009/binding.py index b439570..892fa67 100644 --- a/sleekxmpp/plugins/xep_0009/binding.py +++ b/sleekxmpp/plugins/xep_0009/binding.py @@ -54,7 +54,7 @@ def _py2xml(*args): boolean = ET.Element("{%s}boolean" % _namespace) boolean.text = str(int(x)) val.append(boolean) - elif type(x) is str: + elif type(x) in (str, unicode): string = ET.Element("{%s}string" % _namespace) string.text = x val.append(string) diff --git a/tests/test_stanza_xep_0009.py b/tests/test_stanza_xep_0009.py index 3680033..724ebb9 100644 --- a/tests/test_stanza_xep_0009.py +++ b/tests/test_stanza_xep_0009.py @@ -1,3 +1,5 @@ +# -*- encoding:utf-8 -*- + """ SleekXMPP: The Sleek XMPP Library Copyright (C) 2011 Nathanael C. Fritz, Dann Martens (TOMOTON). @@ -114,6 +116,24 @@ class TestJabberRPC(SleekTest): self.assertEqual(params, xml2py(expected_xml), "XML to string conversion") + def testConvertUnicodeString(self): + params = [u"おはよう"] + params_xml = py2xml(*params) + expected_xml = self.parse_xml(""" + + + + おはよう + + + + """) + self.assertTrue(self.compare(expected_xml, params_xml), + "String to XML conversion\nExpected: %s\nGot: %s" % ( + tostring(expected_xml), tostring(params_xml))) + self.assertEqual(params, xml2py(expected_xml), + "XML to string conversion") + def testConvertInteger(self): params = [32767, -32768] params_xml = py2xml(*params)