diff options
| -rw-r--r-- | test/test_compat.py | 3 | ||||
| -rw-r--r-- | youtube_dl/compat.py | 6 | 
2 files changed, 5 insertions, 4 deletions
| diff --git a/test/test_compat.py b/test/test_compat.py index 2b0860479..834f4bc55 100644 --- a/test/test_compat.py +++ b/test/test_compat.py @@ -74,9 +74,10 @@ class TestCompat(unittest.TestCase):          self.assertEqual(compat_shlex_split('-option "one two"'), ['-option', 'one two'])      def test_compat_etree_fromstring(self): -        xml = '<el foo="bar"></el>' +        xml = '<el foo="bar" spam="中文"></el>'          doc = compat_etree_fromstring(xml.encode('utf-8'))          self.assertTrue(isinstance(doc.attrib['foo'], compat_str)) +        self.assertTrue(isinstance(doc.attrib['spam'], compat_str))  if __name__ == '__main__':      unittest.main() diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index cf10835ca..f39d4e9a9 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -216,8 +216,7 @@ except ImportError:  # Python 2.6  if sys.version_info[0] >= 3:      compat_etree_fromstring = xml.etree.ElementTree.fromstring  else: -    # on python 2.x the the attributes of a node are str objects instead of -    # unicode +    # on python 2.x the the attributes of a node aren't always unicode objects      etree = xml.etree.ElementTree      # on 2.6 XML doesn't have a parser argument, function copied from CPython @@ -231,7 +230,8 @@ else:      def _element_factory(*args, **kwargs):          el = etree.Element(*args, **kwargs)          for k, v in el.items(): -            el.set(k, v.decode('utf-8')) +            if isinstance(v, bytes): +                el.set(k, v.decode('utf-8'))          return el      def compat_etree_fromstring(text): | 
