UTF-8 nedir?

UTF-8, Unicode Transformation Format kavramının kısaltılmış halidir. Unicode değişim formu olarak bilinen UTF-8 Rob Bike’nin öncülüğünde geliştirildi. Aynı kişi bilindiği üzere Go dilinin de geliştiricisi olarak biliniyor. Bu geliştirme sürecinde kendisine Rob Pike de eşlik etti. UTF-8 söz konusu karakterleri 1-6 bayt aralığında kodlamaktadır.

UTF-8 kavramına son zamanlarda çok sık rastlanılsa da pek çok kişi bu konuda teknik bilgiye hakim değil. Her şeyden önce karakter kodlamalarıyla karakter setleri arasında farklıklar olduğunu belirtmeliyiz. Genelde ortak noktalarından ötürü bu ikisi arasında pek ayrım yapılmamaktadır. Oysa Unicode bir karakter seti olarak tanımlanabilir. UTF-8’İ ise bu noktada karakter kodlaması olarak görebiliriz. ASCII’nin aksine UTF-8’de tüm dünya alfabelerini kapsayan onbinlerce karakter söz konusudur. İçinde Türkçe karakterleri de barındıran son derece kapsamlı setler oluşturulmuştur.

utf_8

Ortak kullanılan karakter setleri üzerinden konuşmak, internetin ve iletişimin yaygınlaştığı günümüzde büyük önem taşır. 32 bit Unicode karakterleri artık belli ölçülerde yetersiz kalmaktadır. UTF-8 geliştiricileri tam da bu noktadan hareket etmiştir. Bugün ASCII karakterlerinden oluşan metnin UTF-8 açısından karşılığına baktığımızda net bir denklikle karşılaşmak mümkündür. Tek bir baytla ifade edilmeyen Unicode temelli karakterler ise en az 2 ve daha fazla baytla ifade edilir.  Bu tip karakterler, yani en az 2 ve daha fazla bayt içeren karakterleri kolayca anlayabiliriz. Bu tip karakterlerde ilk baytın ardından gelen baytlar doğrudan 10 rakamı ile başlamak durumundadır.

UTF-8 ifadesinde yer alan  rakam, esasen 8 biti ifade ediyor. Bir Unicode dönüşüm biçimi olarak ele alınması gereken UTF-8’e belli karakterleri çeşitli bayt grupları ile kodlama süreçlerinde başvurulur.  ASCII içinde yer alan ilk 127 karakter doğrudan kendi kodlarıyla beraber kullanılmaktadır. Dışarıda kalan karakterler ise byte dizileri biçimine sokulur. Çoğu zaman UTF-8’in işleyiş şekli ve çalışma tarzı ilgi uyandırmıştır. UTF-8’de düzlemler çeşitli bloklara ayrılmış durumdadır. İlgili her blok kendi bünyesinde çeşitli karakter grupları barındırır. Kodlarda yer alan nokta sayısı blokların büyüklüğünü ifade eder. Bu her zaman sabit bir değer değildir. Çoğu zaman 16’nın katları biçiminde kurgulanmış olan bir yapıyla karşılaşmak mümkündür.

Herhangi bir metin içinde yer alan karakterler birbirinden farklı bloklara ait olabilir. Bu tip metinlerde bir dağılım söz konusu olabilir. Kimi özel oluşturulmuş klavyeler sayesinde en ilginç ve zor sayısal ifadeleri yazmak veya görüntülemek de olasıdır. Birbirinden farklı olan tüm karakterler UTF-8 sayesinde tek bir sayfa içinde rahatlıkla görünmektedir. Geleneksel kodlamalarda örneğin Türkçe karakteri göstermek adına son derece karmaşık olan simge ve rakamlardan yararlanılıyordu. Bunu en sık Ş harfi özelinde görebiliyorduk.

UTF-8 BOM ise kurulum esnasında ciddi zararlar yaratabiliyor. Web sitenizde karakter görüntüleme konusunda engel olamadığınız pek çok hatayla karşı karşıya kalabilirsiniz. Karakterlerinizin bozuk bir hal almasına neden olabilecek UTF-8 BOM konusunda oldukça dikkatli olmalısınız. Herhangi bir metni örneğin UTF-8’e çevirmeye kalktığınızda BOM adı verilen işaret metnin en başına eklenir. Yazının UTF-8 ile görüntülendiğine dair, sinir bozucu bir işaret olarak görülür. Yazının en üst kısmına yerleştiği için ne yazık ki başlıkların önüne geçmektedir. Explorer üzerinde de en üst kısımda bir satırlık hacmi doldurur. Bu işgal edilen alan kullanıcılar adına oldukça rahatsız edici olabilir. BOM işaretinden elbette çok basit bir şekilde kurtulabilirsiniz. Metinlerinizi UTF-8’e dönüştürürken düzenleyicide BOM bulunmadan UTF-8 alanını tercih etmelisiniz. Doğrudan kod silmek doğru bir yönelim olmayacaktır. Dosyanın var olan dil yapısını değiştirmek çözüm noktasında yeterli olacaktır.

UTF-8 Özellikleri

UTF-8’de tüm karakterlerin ayrı ayrı Unicode tarafından saptanan kod noktaları bulunuyor. Tüm bu kod noktaları 0 ve 1.114.111 aralığında yer alıyor. Kod noktaları iki tabanına dönüştürülmektedir. Bu süreçte bizzat taban dönüşümü tercih edilen ilk yöntem değildir. Bunun yerine daha farklı yöntemlerden faydalanılıyor. İşte tüm bu özgün yöntemleri karakter kodlama şekli olarak isimlendirmemiz mümkün.

UTF-8 kodlama stilinde, farklı kod birimlerinden meydana gelecek biçimde iki tabanına dönüştürülür. Her bir kod birimi 8 bit olarak ayarlanmıştır. Bu nedenle UTF-8 aracılığıyla kodlanan bir yazı bütününde ayrı ayrı tüm karakterlerin uzunlukları 8’in katları olacak şekilde sıralanır. UTF-8’in bazı önemli çalışma prensipleri söz konusudur. Örneğin tüm karakterlerin ilk kod biriminin başında, söz konusu karakteri kodlamakta olan total kod birim rakamı kadar hane kullanılır.  UTF-8’in ilk geliştirme sürecindeki genel kapsamı, 31 bit sınırına kadar olan tüm rakamları içeriyordu.

2013 yılına kadar sadece 31 bite kadar olan rakamları UTF-8 sistemiyle kodlamak mümkündü; ancak yapılan güncellemeler bu konudaki üst sınırın boyutlarını bir hayli yukarılara çekti. UTF-8’in en değerli özelliği geriye doğru uyumluluk konusundaki ayrıcalığıdır. Öte yandan çok ya da tek baytlı karakterler arasında kolayca ayrım yapılmasını sağlıyor.  Değişken kod uzunluğu, kendini eş zamanlama, UTF-8’e dair belirtebileceğimiz diğer özellikler arasında diyebiliriz.