The simplest possible fix for the regression in bug 12752 by encoding unicodes
to 8-bit strings.
diff --git a/Lib/locale.py b/Lib/locale.py
index 166538d..0c4d652 100644
--- a/Lib/locale.py
+++ b/Lib/locale.py
@@ -355,6 +355,8 @@
"""
# Normalize the locale name and extract the encoding
+ if isinstance(localename, unicode):
+ localename = localename.encode('ascii')
fullname = localename.translate(_ascii_lower_map)
if ':' in fullname:
# ':' is sometimes used as encoding delimiter.
diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
index 718bbf4..a88d34b 100644
--- a/Lib/test/test_locale.py
+++ b/Lib/test/test_locale.py
@@ -412,6 +412,11 @@
locale.setlocale(locale.LC_CTYPE, loc)
self.assertEqual(loc, locale.getlocale())
+ def test_normalize_issue12752(self):
+ # Issue #1813 caused a regression where locale.normalize() would no
+ # longer accept unicode strings.
+ self.assertEqual(locale.normalize(u'en_US'), 'en_US.ISO8859-1')
+
def test_main():
tests = [