Issue #1813: Fix codec lookup under Turkish locales.
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
index 6c7d44b..6b84023 100644
--- a/Lib/test/test_codecs.py
+++ b/Lib/test/test_codecs.py
@@ -1,6 +1,7 @@
 from test import support
 import unittest
 import codecs
+import locale
 import sys, _testcapi, io
 
 class Queue(object):
@@ -1230,6 +1231,19 @@
         self.assertRaises(TypeError, codecs.getwriter)
         self.assertRaises(LookupError, codecs.getwriter, "__spam__")
 
+    def test_lookup_issue1813(self):
+        # Issue #1813: under Turkish locales, lookup of some codecs failed
+        # because 'I' is lowercased as "ı" (dotless i)
+        oldlocale = locale.getlocale(locale.LC_CTYPE)
+        self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale)
+        try:
+            locale.setlocale(locale.LC_CTYPE, 'tr_TR')
+        except locale.Error:
+            # Unsupported locale on this system
+            self.skipTest('test needs Turkish locale')
+        c = codecs.lookup('ASCII')
+        self.assertEqual(c.name, 'ascii')
+
 class StreamReaderTest(unittest.TestCase):
 
     def setUp(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index c7e917e..4513f9a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -37,6 +37,8 @@
 Library
 -------
 
+- Issue #1813: Fix codec lookup under Turkish locales.
+
 - Issue #12591: Improve support of "universal newlines" in the subprocess
   module: the piped streams can now be properly read from or written to.
 
diff --git a/Python/codecs.c b/Python/codecs.c
index 45d9929..1a3e457 100644
--- a/Python/codecs.c
+++ b/Python/codecs.c
@@ -69,7 +69,7 @@
         if (ch == ' ')
             ch = '-';
         else
-            ch = tolower(Py_CHARMASK(ch));
+            ch = Py_TOLOWER(Py_CHARMASK(ch));
         p[i] = ch;
     }
     p[i] = '\0';