Browse Source

Fix unicode_escape (Fixes #2695)

totalwebcasting
Philipp Hagemeister 11 years ago
parent
commit
676eb3f2dd
2 changed files with 8 additions and 1 deletions
  1. +4
    -0
      test/test_utils.py
  2. +4
    -1
      youtube_dl/utils.py

+ 4
- 0
test/test_utils.py View File

@ -38,6 +38,7 @@ from youtube_dl.utils import (
xpath_with_ns,
parse_iso8601,
strip_jsonp,
uppercase_escape,
)
if sys.version_info < (3, 0):
@ -279,6 +280,9 @@ class TestUtil(unittest.TestCase):
d = json.loads(stripped)
self.assertEqual(d, [{"id": "532cb", "x": 3}])
def test_uppercase_escpae(self):
self.assertEqual(uppercase_escape(u''), u'')
self.assertEqual(uppercase_escape(u'\\U0001d550'), u'𝕐')
if __name__ == '__main__':
unittest.main()

+ 4
- 1
youtube_dl/utils.py View File

@ -2,6 +2,7 @@
# -*- coding: utf-8 -*-
import calendar
import codecs
import contextlib
import ctypes
import datetime
@ -1263,9 +1264,11 @@ class PagedList(object):
def uppercase_escape(s):
unicode_escape = codecs.getdecoder('unicode_escape')
return re.sub(
r'\\U[0-9a-fA-F]{8}',
lambda m: m.group(0).decode('unicode-escape'), s)
lambda m: unicode_escape(m.group(0))[0],
s)
try:
struct.pack(u'!I', 0)


Loading…
Cancel
Save