diff -r a7e0a1dbfbb6 Lib/test/test_xdrlib.py --- a/Lib/test/test_xdrlib.py Sun Mar 27 10:15:57 2011 +0200 +++ b/Lib/test/test_xdrlib.py Sun Mar 27 12:41:09 2011 +0200 @@ -9,6 +9,7 @@ p = xdrlib.Packer() s = b'hello world' + u = 'hello world' a = [b'what', b'is', b'hapnin', b'doctor'] p.pack_int(42) @@ -19,6 +20,7 @@ p.pack_float(1.9) p.pack_double(1.9) p.pack_string(s) + p.pack_string(u) p.pack_list(range(5), p.pack_uint) p.pack_array(a, p.pack_string) @@ -44,6 +46,7 @@ self.assertAlmostEqual(up.unpack_float(), 1.9) self.assertAlmostEqual(up.unpack_double(), 1.9) self.assertEqual(up.unpack_string(), s) + self.assertEqual(up.unpack_string().decode('UTF-8'), u) self.assertEqual(up.unpack_list(up.unpack_uint), list(range(5))) self.assertEqual(up.unpack_array(up.unpack_string), a) up.done() diff -r a7e0a1dbfbb6 Lib/xdrlib.py --- a/Lib/xdrlib.py Sun Mar 27 10:15:57 2011 +0200 +++ b/Lib/xdrlib.py Sun Mar 27 12:41:09 2011 +0200 @@ -76,6 +76,8 @@ def pack_fstring(self, n, s): if n < 0: raise ValueError('fstring size must be nonnegative') + if isinstance(s, str): + s = bytes(s, 'UTF-8') data = s[:n] n = ((n+3)//4)*4 data = data + (n - len(data)) * b'\0'