EMZETT.
Giriş yap

UTF-16 ve vekil çiftler (surrogate pairs)

Kısaca: UTF-16, Unicode karakterlerini 16 bitlik birimlerde saklar. İlk 65.536’nın ötesindeki karakterler iki birim, yani bir vekil çifti (surrogate pair) gerektirir.

Biraz daha ayrıntılı: Java, JavaScript, C# ve Windows dahilî olarak UTF-16 kullanır. Bu yüzden orada bir dizenin uzunluğu çoğu zaman görünür karakter sayısı değildir.

Ayrıntılı

  • Temel düzlem (BMP): U+0000–U+FFFF kod noktaları bir birim kaplar.
  • Vekil çifti: U+10000’den itibaren bir kod noktası (birçok emoji), yüksek (D800–DBFF) ve alçak (DC00–DFFF) bir birime ayrılır.
  • Sonuç: JavaScript’te "😀".length 2’dir. Çiftin ortasından kesersen geçersiz bir karakter oluşur. Array.from(s) veya for…of kod noktası başına çalışır.
  • Bayt sırası: UTF-16LE ve UTF-16BE, çoğunlukla dosya başında BOM (byte order mark) ile.
  • UTF-8’e karşı: UTF-8, ASCII uyumludur ve web standardıdır. UTF-16, çoğu CJK metninde pek tasarruf sağlamaz.
  • Daha da ince: Görünür bir karakter birden çok kod noktasından oluşabilir (grafem kümeleri; örneğin bayraklar veya ten rengi emojileri).

Ayrıca bak: UTF-8 ve karakter kodlaması