Türkçenin noktasız «ı» harfi ve büyük noktalı «İ» harfi, Unicode'da birbirinden tamamen bağımsız iki kod noktasıdır — bu yüzden \u0131 (ı) ve \u0130 (İ) hiçbir şekilde birbirinin büyük/küçük harf karşılığı gibi davranmaz, tıpkı sıradan İngilizce "i" ve "I" çiftinin davrandığı gibi.
Neden bu ayrım pratikte hataya yol açar
Birçok programlama dili, büyük/küçük harf dönüşümünü İngilizce kurallarına göre yapar: "i".toUpperCase() sonucu "I" olur, "ı" değil. Türkçe metni işleyen bir sistem bu varsayılan davranışı kullanırsa, «İstanbul» kelimesi küçük harfe çevrildiğinde beklenmedik şekilde «istanbul» yerine «i̇stanbul» gibi garip bir sonuç üretebilir — escape kodlarına bakıldığında bu, iki farklı kod noktasının karıştırılmasından kaynaklanır.
JSON ve escape dizileri
JSON spesifikasyonu, bir dizedeki herhangi bir karakterin \uXXXX olarak escape edilmesine izin verir. Bu, veriler programatik olarak üretildiğinde ve serileştirici uyumluluk için ASCII dışındaki karakterlerden kasıtlı olarak kaçındığında sıkça görülür — "değil" gibi bir kelime JSON'da birkaç escape kodundan oluşan bir dizi olarak görünebilir.
Ne zaman gerekli
- Bir API'nin JSON yanıtındaki escape dizilerinin arkasında hangi metnin gizlendiğini sade bir dilde okumak.
- ASCII dışındaki karakterleri kabul etmeyen bir ortam için bir dize hazırlamak.
- Dış verilerle çalışırken kodlama sorunlarını teşhis etmek.
Temel düzlemin dışındaki karakterler (emoji)
Türkçeye özgü harflerin tümü temel çok dilli düzlem içinde tek bir escape koduyla ifade edilir. Emojiler ise bu düzlemin dışındadır ve JavaScript'te iki escape koduyla — \ud83d\ude00 gibi bir vekil çiftle — kodlanır; bu, Türkçe harflerin hiçbirinde görülmeyen bir durumdur.