Bu yazımda birçok kimsenin karşısına muhakkak çıkmış olduğun inandığım UTF-8 isimli bir karakter kodlama yönteminden söz etmek istiyorum.
Aynı zamanda günümüzdeki Go programlama dilinin de kurucusu olan Rob Pike ve Ken Thompson isimli ağabeylerimizin vakti zamanında dert edindikleri bir konuya çözüm üretme isteklerine dayanan bu yöntem, günümüze kadar adından söz ettirirmiştir.
Dert edindikleri şey şuydu ki;
ASCII (American Standard Code fore Interchange) isimli karakter seti internetin yaygınlaşmasıyla birlikte birçok dil için yeterli olmamaktaydı ve ortak bir karakter seti ihtiyacı mevcuttu. Bu yetersizlikler nedeniyle Unicode (Universal Code) isimli bir karakter seti daha üretilmişti. Unicode işin temelinde sorunu çözüyor olsa da ASCII setinden 4 kat daha maliyetli çözüm üretmekteydi. Unicode’un her bir karakteri RAM’de 24bit (3 byte) fazladan yer tutuyordu.
İşte bu soruna çözüm olarak Rob ve Ken ağabeyimizin bir Çarşamba akşam yemeğinden sonra başlattıkları çözüm süreci, sonraki haftanın Pazartesi gününde UTF (Unicode Transformation Format) isimli kodlama metodunu icat etmeleriyle son bulmuştu.
Bu yöntemin temeli ASCII’nin karakterleri 8 bit’lik yer tutarken bunun sadece 7 bit’ini kullanmasından ve bu 8 bit’lik verilerin başında 0 olmasından gelmekteydi.
NEDİR BU UTF-8
Şimdi gelin biraz teknik konular ile UTF-8 çalışma prensibini anlamaya çalışalım.
Öncelikle başında 0 olan veriler birebir ASCII karakterleriyle eşleştirilir. Başında 1 olanlar ise birazdan bahsedeceğim algoritma ile kodlanır.
UTF-8, kod noktasının değerine bağlı olarak kod noktalarını 1 ila 4 byte arasında kodlar.
- Eğer iki byte yeterli olacaksa ilk bite 1 ikinci bite 1 ve üçüncü bite 0 şeklinde olacaktır.
- Eğer üç byte yeterli olacaksa ilk bite 1, ikincisi 1, üçüncüsü 1 ve dördüncü bite ise 0 olacaktır.
- Dört byte’a sahip yapıda ise 1111 şeklinde bir dizilim söz konusudur.
Yani UTF-8 kodlama yönteminde ilk byte’ın başındaki “1” sayısı toplam byte sayısını ifade etmektedir. Her byte’ın başındaki “1,0” bitleri kullanılmaz ve arda kalanlar seçilir.
ÖRNEK
Şekil 1.2'de siyah alanlar arda kalan kısım olarak nitelendirilebilir.
Byte’lardan arda kalanlar ise birleştirilerek Unicode setindeki yeri bulunur.
00000000 11100101 ikilisinin değeri 231'i gösterir ve bu Unicode setinde “ç” karakterine denk gelir ve bu ve benzeri Unicode karakterleri için optimizasyon sağlanmış olur.
Bahsettiğimiz gibi bu yöntem Unicode ile 4byte’lık yer işgal eden karakterlerin duruma göre optimize edilerek kullanılmasını amaçlar.
Hiç yorum yok:
Yorum Gönder
Görüş ve Düşüncelerinizi Bizimle Paylaşmayı Unutmayın.