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 = [