]> granicus.if.org Git - python/commitdiff
Teach unquote() to handle unicode inputs
authorRaymond Hettinger <python@rcn.com>
Sat, 15 Oct 2005 16:41:53 +0000 (16:41 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 15 Oct 2005 16:41:53 +0000 (16:41 +0000)
Lib/test/test_urllib.py
Lib/urllib.py

index 94f0f9efb9bbeec2e707f0471de35e82150d6e03..4579c479d1478bbf06425104ee2f74531499514b 100644 (file)
@@ -415,6 +415,10 @@ class UnquotingTests(unittest.TestCase):
         self.assertEqual(expect, result,
                          "using unquote_plus(): %s != %s" % (expect, result))
 
+    def test_unquote_with_unicode(self):
+        r = urllib.unquote(u'br%C3%BCckner_sapporo_20050930.doc')
+        self.assertEqual(r, u'br\xc3\xbcckner_sapporo_20050930.doc')
+
 class urlencode_Tests(unittest.TestCase):
     """Tests for urlencode()"""
 
index bc16be0162aa922737f07d381f830f51c9bd6ced..f00d02ff9eeefa5b5d003f17fcce983a7c87c505 100644 (file)
@@ -1061,6 +1061,8 @@ def unquote(s):
             res[i] = _hextochr[item[:2]] + item[2:]
         except KeyError:
             res[i] = '%' + item
+        except UnicodeDecodeError:
+            res[i] = unichr(int(item[:2], 16)) + item[2:]
     return "".join(res)
 
 def unquote_plus(s):