Kod noktası

Karakter kodlaması terminolojisinde, kod noktası veya kod konumu kod uzayını oluşturan sayısal değerlerin her birine verilen isimdir. Kod noktalarının karşılık geldiği karakterler genelde çizgisel karakterler olsa da zaman zaman biçimlendirme karakterleri de olabilmektedir (satır sonu karakteri gibi).
Örneğin ASCII karakter kodlama düzeni 016'dan 7F16'ya kadar olan 128 sayıyı içerir. Genişletilmiş ASCII ise 016'dan FF16'ya kadar olan 256 sayıyı içerir. Unicode ise 016 ile 10FFFF16 aralığındaki 1.114.112 kod noktasını içermektedir. Unicode kod uzayı on yedi adet düzleme (temel çokdilli düzlem ve 16 tamamlayıcı düzlem) bölünmüştür. Bu düzlemlerin her biri 65.536 (= 216) kod noktası bulundurur. Dolayısıyla Unicode kod uzayının toplam uzunluğu 17 65.536 = 1.114.112'dir.
Tanım
Unicode'un ortaya çıkışıyla şu iki kavramın birbirinden ayırt edilmesi ihtiyacı hissedildiğinden kod noktası kavramı kullanılmaya başlanmıştır:
metinlerin depolanmaya ve taşınmaya uygun bir şekilde, bir karakter kodlamasıyla bit dizileri şeklinde kodlanmış biçimleri
ekrana çizilen şekillerle (glif) ifade edilen karakterlerin soyut temsilcisi, bu temsilciye atanan ve karakter kodlamalarının kodlamada esas aldığı sayı.
Bunlardan ikincide belirtilen sayılar kod noktası adını almıştır. Eskiden bu iki kavram için ayrı bir ifade bulunmamaktaydı. Çünkü ASCII ve genişletilmiş ASCII kodlamalarında kodlanmış sayı ve kod noktaları aynı sayılardı. Ancak Unicode sisteminde kodlanmış sayılar kod noktalarından ayrıdır. Aynı karakterin kodlanmasıyla elde edilen sayı kullanılan kodlama biçimine göre farklı olabilecekken aynı karakterin kod noktası Unicode'da her zaman aynıdır. Yani kod noktası kodlama türünden bağımsızdır. Bu ayrım bir başka deyişle şu şekilde de ifade edilebilir: Unicode'da karakter kodlamaları kod noktalarını kodlayarak bellekte depolanabilecek veya veri olarak aktarılabilecek bit dizilerine dönüştürürler. Unicode öncesi kodlama sistemleri ise doğrudan karakterleri kodlarlar, yani karakterleri bir sayıyla eşleştirip bu sayıyı iki tabanına dönüştürüp bitlerle yazarak bilgisayar sistemlerinde temsil etmiş olurlar. Unicode'da ise karakterler için tüm kodlama biçimleri tarafından ortak olarak esas alınacak sayılar (kod noktaları) belirlenmiş ve her bir karakter bir sayıyla eşleştirilmiştir. Farklı kodlama biçimleri bu kod noktalarını farklı şekilde kodlayarak iki tabanına dönüştürebilirler. Böylelikle karakterden bit dizilerine giden süreç şu iki aşamaya bölünmüştür:
Soyut karakterlerin belirlenmesi ve her birine bir kod noktası tahsis edilmesi
Sabit uzunlukta bit dizileri kullanan (8-bit uzunluğundaki baytlar gibi) bilgisayar sistemlerinin kod noktalarını depolayabilmesi ve taşıyabilmesi için kod noktalarının belirli bir yöntemle ikil sayılara dönüştürülmesi.
Birinci aşamanın öngördüğü kod noktası tahsis sürecini Unicode Consortium yürütmektedir. Karakterler ve kendilerine atanan kod noktaları Unicode tarafından Code Chart adı verilen belgeler halinde tablolar halinde yayınlanmaktadır. Yeni karakter eklemeleri yapıldıkça bu tablolar güncellenmektedir.
İkinci aşamada öngörülen süreç ise karakter kodlama biçimlerince gerçekleştirilmektedir. Bu aşamada farklı yöntemlerin olması ve her birinin kendine göre avantaj ve dezavantajlarının bulunması, metinsel verinin kullanıldığı sistemin teknik özelliklerine göre yapılacak değerlendirme sonucunda uygun kodlama seçilip kullanılabilmesini sağlamaktadır. Ancak günümüzde en yaygın olarak kullanılan karakter kodlaması UTF-8'dir.
Unicode'da kodlama esnasında ortaya çıkan belirli uzunluktaki bit dizilerine kod birimi denir. UCS-4 kodlamasında her kod noktası 4 baytlık ikil sayılarla kodlanırken UTF-8 kodlamasında kod noktaları birden dörde kadar değişen uzunlukta bayt dizileriyle kodlanmaktadır. Kod noktaları soyut karakterlere atanan sayılardır. Soyut karakterler grafiksel bir görüntü belirtmeyip yalnızca metinsel verinin bir birimi olarak düşünülmüştür. Yani grafiksel olarak farklı şekillerde gösterimi mümkün olan karakterler aynı soyut karakterle temsil ediliyor olabilirler ve bu durumda hepsinin kod noktası aynı olur. Kod noktalarının çoğu ileride yeni karakterlere tahsis edilmek için ayrılmıştır. Bununla beraber bazı kod noktaları doğrudan karakterlere tahsis edilmeyip başka amaçlara hizmet etmektedirler (UTF-16 kodlamasında kullanılan yedek çiftler gibi).
Kod noktalarıyla temsil ettikleri soyut karakter arasındaki ayrım Unicode'da pek dile getirilmemiştir; ancak başka karakter kodlama düzenlerinde kolayca fark edilir durumdadır. Kod sayfası olarak adlandırılan çoğu karakter kodlama düzeni aynı kod uzayını kullanmalarına rağmen bu kod uzayındaki kod noktalarını farklı karakterlere tahsis etmişlerdir. Örneğin genişletilmiş ASCII setlerinin hepsi 256 sayılık aynı kod uzayını kullanmasına rağmen bazı kod noktalarını farklı karakterlere atamış olmalarıyla değişiklik gösterirler.
Unicode'un bu diğer kodlama düzenlerinden farkı ise tüm karakterleri tek kod uzayında birleştirerek aynı kod uzayının farklı karakterler için kullanılması zorunluluğuna çözüm olmasıdır.