İçeriğe atla

UTF-8

UTF-8 8-bitlik bir Unicode dönüşüm biçimidir (İng: Unicode Transformation Format 'ın kısaltması). Unicode karakterlerini değişken sayıda 8 bitten oluşan bayt (kod birimi) gruplarıyla kodlamakta kullanılır. Rob Pike ve Ken Thompson tarafından geliştirilmiştir.

UTF-8 kodlaması Unicode karakterlerini 1-6 bayt uzunluğunda diziler olarak kodlar. ASCII kodlaması içinde 0-127 arasında kalan karakterler, Unicode standardında aynı kod noktalarıyla ifade edildiğinden aynen kendi kodları ile kullanılır, diğerleri ise bayt dizileri haline gelir.

Özellikleri

Karakterlerin her birinin kendilerine Unicode tarafından atanan bir kod noktası vardır. Her kod noktası 0 ile 1.114.111 arasında bir sayıdır. Bu kod noktaları iki tabanına dönüştürülürken doğrudan taban dönüşümü yapılmak yerine çeşitli yöntemler kullanılmaktadır. Bu yöntemlerin her biri ayrı birer karakter kodlama biçimi olarak adlandırılır. UTF-8 kodlama biçimi kod noktalarını değişken sayıda kod birimlerinden oluşacak şekilde iki tabanına dönüştürmeye olanak vermektedir. Kod birimlerinin her biri 8 bit uzunluğundadır. Dolayısıyla UTF-8 ile kodlanan bir metinde her karakterin uzunluğu 8'in katıdır. Kodlama yapılırken kodlanmış metni işleyecek bir bilgisayar yazılımının karakterlerin başlangıç ve bitiş noktalarını bilebilmesine olanak sağlamak için kod birimlerinin içine işaretçi bazı bitlerin yerleştirilmesi gerekmektedir.

UTF-8 kodlama biçimi şu kurallara göre çalışmaktadır:

  • Her karakterin birinci kod biriminin başında o karakteri kodlayan toplam kod birimi sayısı kadar hane 1 ve bu hanelerden sonraki ilk hane 0'dır.
  • Aynı karakteri simgeleyen sonraki tüm baytların başındaki ilk iki hane 10'dır.

UTF-8'in tasarımı ilk olarak Dave Prosser'ın önerdiği ve daha sonra Ken Thompson'ın üzerinde değişiklikler yaptığı aşağıdaki tabloda görülebilir. Bu tablodaki kalıplar kullanılarak kod noktasının bit sayısına uygun olan kalıp seçilip x ile işaretli kısımlara sağa dayalı olacak şekilde bitler yerleştirilmek ve geriye kalan kısımlar 0 ile doldurulmak suretiyle karakter kodlanmış olur.

Kod noktasının
bit sayısı
İlk
kod noktası
Son
kod noktası
Kod birimi
(bayt) sayısı
1. Bayt2. Bayt3. Bayt4. Bayt5. Bayt6. Bayt
  7 U+0000U+007F 1 0xxxxxxx
11 U+0080U+07FF 2 110xxxxx10xxxxxx
16 U+0800U+FFFF 3 1110xxxx10xxxxxx10xxxxxx
21 U+10000U+1FFFFF 4 11110xxx10xxxxxx10xxxxxx10xxxxxx
26 U+200000U+3FFFFFF 5 111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx
31 U+4000000U+7FFFFFFF 6 1111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx

Orijinal şartname 31 bite kadar olan tüm sayıları kapsamaktadır. Teorik olarak 31 bite kadar uzunluktaki sayıları UTF-8 ile kodlamak mümkün olsa bile, Kasım 2003'te çıkan RFC 3629 11 Ağustos 2015 tarihinde Wayback Machine sitesinde arşivlendi. standardı ile UTF-8'in üst sınırı U+10FFFF olarak belirlenmiştir. Bunun nedeni diğer bir karakter kodlama biçimi olan UTF-16'nın kodlayabileceği en büyük kod noktasının U+10FFFF olmasıdır. Kodlama standartları arasında uyumluluk sağlanması ve hepsinin uzak gelecekte de sorunsuz olarak kullanılmaya devam edebilmesi için UTF-8'in üst sınırı da uygulamada U+10FFFF olarak belirlenmiştir. Ayrıca Unicode ve ISO 10646 yine UTF-16 ile uyumu korumak için karakterlere U+10FFFF'den daha büyük kod noktası atamamaya karar vermişlerdir. Bu yüzden yukarıdaki tabloda 5 ve 6 bayttan oluşan kalıpların tamamı ve 4 bayttan oluşan kalıpların da yarıya yakını günümüzde geçersizdir.

UTF-8 kodlamasının göze çarpan başlıca özellikleri aşağıdaki gibi listelenebilir:

  • Geriye doğru uyumluluk: 0 ile 127 arasındaki ASCII değerleri için tek baytlık değerler kullanılmakta ve bu değerler başka karakterlerin kodlanması esnasında ortaya çıkmamaktadır. En yüksek basamaklı bit (8. bit) de bu karakterler için 0dır. Dolayısıyla 7-bitlik ve 8-bitlik ASCII ile kodlanmış metinler UTF-8 ayrıştırıcıları tarafından sorunsuzca işlenebilir.
  • Çok baytlı ve tek baytlı karakterler arasındaki açık ayrım: 127'den daha büyük kod noktaları çok baytlı dizilerle gösterilir ve bu dizilerde bir adet başlatıcı bayt ve bir veya daha fazla devam baytı bulunmaktadır. Başlatıcı bayt, dizideki toplam bayt sayısı kadar 1 ve daha sonra bir adet 0 ile başlar. Devam baytlarının ise tamamı 10 ile başlamaktadır. Eğer kod noktası tek baytla kodlanıyorsa bu bayt da doğrudan 0 ile başlamaktadır.
  • Kendini eş zamanlama: Başlatıcı bayt, devam baytı ve tek baytın değerleri birbiriyle asla aynı olamaz. Çünkü hepsi yukarıdaki tabloda görüldüğü gibi farklı şekillerde başlamaktadır. Bu özellik UTF-8'in kendini eş zamanlayabilen bir sistem olmasını sağlar. Yani UTF-8 ile kodlanmış metinleri işleyen bir yazılım, metin içinde rastgele seçtiği bir baytın karakter başlatan bayt olup olmadığını belirleyebilir ve karakterlerin başlangıç ve bitişlerini kolayca bulabilir. 0xxxxxxx, 110xxxxx, 1110xxxx ve 11110xxx bit kalıpları karakter başlangıcını ve bir sonraki geçerli karakterin başlangıcının kaç bayt sonra olduğunu açıkça işaret etmektedir.
  • Kodlanmış bayt dizilerinin uzunluklarının açıkça belirtiliyor olması: Başlatıcı baytın başındaki 1lerin sayısı devam eden baytların sayısını açıkça belli etmektedir. Dolayısıyla karakterin toplamda kaç bayt tarafından kodlandığı ve diğer karakterin nerede başladığı devam baytlarını tek tek incelemeden anlaşılabilmektedir. Dolayısıyla metinde karakter arama ve bulma işlemleri kolaylaşmış olur.
  • Değişken kod uzunluğu: Kodlanmış karakterlerin kapladığı yeri mümkün olduğunca azaltabilmek için değişken uzunluklu baytlarla kodlama yapılması büyük kolaylıklar sağlamaktadır. Örneğin sabit uzunluklu UTF-16 kodlamasında kodlanmış karakter uzunluğu iki bayttır. U+0000 ve U+00FF aralığındaki kod noktaları tek bayta sığabilmelerine karşın başlarına bir adet boş bayt konularak ikiye tamamlanırlar. Bu yüzden de sırf temel Latin harfleriyle yazılmış bir metin UTF-16 kodlamasıyla UTF-8'e göre iki katı yer kaplamaktadır. Değişken uzunluklu kodlama ile bu sorun çözülmüş ve her kod noktası ihtiyaç duyulduğu kadar baytla kodlanabilir hale gelmiştir.

İlk 128 karakter (US-ASCII kümesindeki karakterlerin aynısı) tek baytla kodlanır. Sonraki 1.920 karakter ise iki baytla kodlanır. Bu 1.920 karakter neredeyse tüm Latin alfabeleri ve ayrıca Yunan, Kiril, Koptik, Ermeni, İbrani, Arap, Süryani ve Thaana alfabelerini ve eklemlenebilen diyakritik işaretleri kapsamaktadır. Yaygın kullanımdaki hemen hemen tüm karakterleri bulunduran[1] Temel Çokdilli Düzlemin bir ve iki baytla kodlananlar dışındaki tüm karakteri için üç bayt gerekir. Çin Japon ve Kore karakterlerinden pek yaygın kullanılmayanlar, çeşitli tarihi yazı biçimleri, matematiksel simgeler ve emojinin bulunduğu diğer Unicode düzlemlerindeki karakterler de dört bayt ile kodlanır.

Örnekler

"ş" harfinin UTF-8 ile kodlanması

  1. ş harfinin Unicode kod noktası U+015F'tir.
  2. Kod noktası U+0080 ve U+07FF aralığında olduğu için tabloya göre en az iki baytlık kalıbın içine sığabileceği anlaşılmaktadır.
  3. On altı tabanındaki015F sayısı iki tabanında 001 0101 1111 şeklinde gösterilmektedir. Soldaki iki adet sıfır tablodaki kalıpta 11 bitlik boş yerin tamamını kaplamak için eklenmiştir.
  4. Kodlanmış karakterimiz iki kod biriminden oluşacağı için ilk kod birimi iki adet 1 ve devamında bir adet 0 ile başlamaktadır. (110xxxxx)
  5. Kalan beş hane kod noktamızın ilk beş hanesiyle doldurulur (11000101).
  6. Mavi renkli kısım yerleştirildiği için kod noktamızdan geriye yeşil renkle gösterilen 6 hane kalmıştır (001 0101 1111).
  7. İkinci kod birimimiz kural gereği 10 ile başlamaktadır ve kalan 6 hanesi boştur. (10xxxxxx)
  8. Kalan 6 haneyi kod noktamızda kalan bitlerle doldurursak ikinci kod birimimiz (baytımız) de tamamlanmış olur (10011111).
  9. Kodlama tamamlanmıştır. U+015F kod noktalı "ş" karakteri UTF-8 kodlamasında 11000101 10011111 şeklinde kodlanmaktadır. İki tabanındaki bu uzun bit dizilimi yazımı daha kolay olsun diye sıklıkla on altı tabanına dönüştürülerek C5 9F olarak gösterilir.


İlgili Bağlantılar

Kaynakça

  1. ^ Allen, Julie D.; Anderson, Deborah; Becker, Joe; Cook, Richard, (Ed.) (2012). "The Unicode Standard, Version 6.1". Mountain View, California: Unicode Consortium. The Basic Multilingual Plane (BMP, or Plane 0) contains the common-use characters for all the modern scripts of the world as well as many historical and rare characters. By far the majority of all Unicode characters for almost all textual data can be found in the BMP. 

İlgili Araştırma Makaleleri

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

<span class="mw-page-title-main">IPv4</span> İnternet Protokolünün 4. sürümü

İnternet Protokol Versiyon 4 (IPv4), İnternet Protokolü'nün (IP) dördüncü versiyonudur.

<span class="mw-page-title-main">AES</span> Şifreleme standartı

AES, elektronik verinin şifrelenmesi için sunulan bir standarttır. Amerikan hükûmeti tarafından kabul edilen AES, uluslararası alanda da defacto şifreleme (kripto) standardı olarak kullanılmaktadır. DES'in yerini almıştır. AES ile tanımlanan şifreleme algoritması, hem şifreleme hem de şifreli metni çözmede kullanılan anahtarların birbiriyle ilişkili olduğu, simetrik-anahtarlı bir algoritmadır. AES için şifreleme ve şifre çözme anahtarları aynıdır.

<span class="mw-page-title-main">Unicode</span> endüstri standartı

Unicode Unicode Consortium organizasyonu tarafından geliştirilen ve her karaktere bir sayı değeri karşılığı atayan bir endüstri standardıdır. Sistemin amacı farklı karakter kodlama sistemlerinin birbiriyle tutarlı çalışmasını ve dünyadaki tüm yazım sistemlerinden metinlerin bilgisayar ortamında tek bir standart altında temsil edilebilmesini sağlamaktır. Evrensel Karakter Kümesi (UCS) olarak bilinen ISO/IEC 10646 standardı ise, her iki organizasyonun işbirliği ile aynı sayısal karşılıkları taşımaktadır. Unicode, son sürümü itibarıyla 129 farklı modern ve tarihî yazım sistemine ait 120.000'den fazla karakteri ve emoji gibi çeşitli sembol kümelerini kapsamaktadır.

WEP, IEEE 802.11 kablosuz ağları için bir güvenlik algoritmasıdır. 1997'de onaylanan orijinal 802.11 standardının bir parçası olarak sunulan WEP'in amacı, geleneksel bir kablolu ağ ile karşılaştırılabilir veri gizliliği sağlamaktı. 10 veya 26 heksadesimal sayı içeren bir anahtara sahip olan WEP, bir zamanlar geniş çapta kullanımdaydı ve kullanıcılara yönlendirici konfigürasyon araçları tarafından sunulan ilk güvenlik tercihi idi.

<span class="mw-page-title-main">Bayt</span> 8 bite eşit dijital bilgi birimi

Bayt, elektronik ve bilgisayar bilimlerinde genellikle 8 bitlik dizilim boyunca 1 veya 0 değerlerini bünyesine alan ve kaydedilen bilgilerin türünden bağımsız bir bellek ölçüm birimi. Bir bayt, Latin alfabesini baz alan 8-bitlik bir kodlamada herhangi bir harfi temsil eder.

<span class="mw-page-title-main">ASCII</span> Latin alfabesi üzerine kurulu 7 bitlik bir karakter kümesi

ASCII Latin alfabesi üzerine kurulu 7 bitlik bir karakter kümesidir. İlk kez 1963 yılında ANSI tarafından standart olarak sunulmuştur.

Base64 ikili verilerin sadece ASCII karakterlerini kullanan ortamlarda iletilmesine ve saklanmasına olanak tanıyan bir kodlama şemasıdır.

Â, Türkçedeki yabancı kökenli sözcüklerin ve eklerin telaffuzunu Türkçeye uyarlamak için kullanılır. Â harfiyle başlayan kelimeler de vardır: Âkif, Âdem, âlem, âmâ gibi. Şapkalı a genellikle l, k ve g, h ünsüzlerinden sonra kullanılır. Hâlâ, dergâh, rüzgâr, dükkân, kâgir, kâğıt, kâtip, kâr, kâse, Mevlâ, hâl, mekân, mükâfat, yâr, Kâbe, Hakkâri gibi. Uzun okunması gereken diğer ünlüler için kullanılmaz. Fakat kalın okunması gereken k ve g harflerinden sonra gelen uzun a ^ imi almaz. Kasım (Bey), kanun vb. Â harfi Türkçenin her yerinde egemen olmasına rağmen, resmî alfabede yer almaz.

Telekomünikasyonda, ismini yaratıcısı Richard Hamming’den alan, doğrusal hata düzelten bir koddur. Hamming Kodu tek bitlik hataları saptayıp düzeltebilir. Veya aynı kod bir veya iki bitlik hataları saptamak üzere kullanılabilir. Buna karşın, basit eşlik kodu iki bitin transpoze olduğu yerde hata bulamaz; bulsa da düzeltemez.

<span class="mw-page-title-main">Seri bağlantı noktası</span>

Seri port seri bir bağlantı noktası, seri iletişim, her seferinde içeriye veya dışarıya doğru bir bit bilgi transfer eden fiziksel bir arayüzdür. Kişisel bilgisayarların tarihi boyunca terminaller veya modemler gibi cihazlar ile bilgisayarlar arasındaki veri transferi çoğunlukla seri bağlantı noktaları üzerinden sağlanmıştır. Fare, klavye, diğer çevre birimleri de bu yolla bilgisayara bağlanmaktadır.

<span class="mw-page-title-main">BCD kodu</span>

BCD kodu, bilgisayar ve elektronik sistemlerinde onluk tabandaki (decimal) sayıların ikilik tabana (binary) dönüştürülmesi için kullanılan sayısal kodlama metodudur. Bu dönüştürme işlemi yapılırken öncelikle sayının her bir basamağı tek tek ikilik tabana çevrilir ve ardından her basamağın karşılık geldiği binary değerler sırasıyla birleştirilerek sayının BCD Kodu ile gösterimi elde edilir.

Bir açık dosya biçimi, sayısal verileri saklamak için genellikle standart organizasyonları tarafından yayımlanmış ve herkesçe kullanılıp uyarlanılabilicek belirtimlerdir. Örneğin açık biçimler hem sahipli hem de ücretsiz ve özgür yazılımlarda her birinde kullanılan tipik yazılım lisanslarıyla birlikte kullanılabilir. Açık biçimlerin aksine kapalı biçimlerde ticari sırlar olduğu kabul edilir. Açık biçimler eğer telif hakkı, patent, ticari marka ve benzeri diğer kısıtlamalar içermiyor ve herkes istediği amaçla maddi bir maliyet olmaksızın kullanabiliyorsa özgür dosya biçimleri olarak anılır.

<span class="mw-page-title-main">Karakter kodlaması</span> yazıdaki karakterleri rakamsal değerlerle temsil etmek

Bilişimde karakter kodlaması kavramı bir çeşit kodlama sistemi kullanılarak kodlanmış karakter gruplarını temsil etmektedir. Soyutlama düzeyi ve kullanıldığı bağlama bağlı olarak karakterlere karşılık gelen kod noktaları ve bunların oluşturdukları kod alanı, bit örüntüleri, oktetler, doğal sayılar, elektrik sinyalleri vb. şeklinde algılanabilir. Metinsel verilerin işlenmesi, depolanması ve iletimi esnasında karakter kodlamaları kullanılır. Karakter seti, karakter eşlem veya kod sayfası gibi ifadeler karakter kodlaması kavramıyla eş anlamlıymış gibi kullanılsa da aralarında bazı anlam farkları bulunmaktadır.

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.

Kriptografide, doldurma birçok farklı uygulamaya işaret eder.

Kelime işlemci ve dizgicilikte, ayrılmaz alan (" "), aralıksız alan, zor alan veya sabit alan, kesintisiz alan için "sabit alan" teriminin kullanımı, "sabit genişlikli alan" terimi ile karıştırılabildiği için kesinlikle önerilmez. Konumunda otomatik satır kesmesini önleyen boşluk karakteri. HTML dahil olmak üzere bazı formatlarda, ardışık boşluk karakterlerinin tek bir alana daralmasını da önler.

Programlamada, beyaz boşluk tipografide yatay veya dikey alanı temsil eden herhangi bir karakter veya karakter dizisidir. Oluşturulduğunda, bir boşluk karakteri görünür bir işarete karşılık gelmez, ancak genellikle bir sayfadaki bir alanı kaplar. Örneğin, ortak boşluk sembolü U+0020   SPACE, Batı'da kelime bölücü olarak kullanılan betik metinde boş bir noktalama işareti temsil eder.

<span class="mw-page-title-main">Düz metin</span> yalnızca okunabilir materyalin biçimlendirilmemiş karakterlerinden oluşan bilgisayar verileri

Bilgi işlemde, düz metin yalnızca karakterlerden oluşan okunabilir materyali temsil eden ancak grafiksel gösterimini veya diğer nesneleri temsil etmeyen veriler için kullanılan geniş/serbest bir terimdir. Ayrıca metnin basit düzenini etkileyen boşluklar, satır sonları veya sekme karakterleri gibi sınırlı sayıda "boşluk" karakteri de içerebilir. Düz metin, stil bilgilerinin dahil edildiği biçimlendirilmiş metinden; paragraflar, bölümler ve benzerleri gibi belgenin yapısal kısımlarının tanımlandığı yapılandırılmış metinden; ve bazı kısımların ikili nesneler olarak yorumlanması gereken ikili dosyalardan farklıdır.

<span class="mw-page-title-main">Windows Konsolu</span> Microsoft Windowstaki konsol uygulamalarına yönelik altyapı

Windows Konsolu, Microsoft Windows'daki konsol uygulamaları için altyapıdır. Bir Windows Konsolu örneğinin bir ekran arabelleği ve bir giriş arabelleği vardır. Konsol uygulamalarının bir pencere içinde veya donanım metin modunda çalışmasına olanak tanır. Kullanıcı, Şablon:Keypress tuş kombinasyonunu kullanarak ikisi arasında geçiş yapabilir. Metin modu Windows Vista ve sonraki sürümlerde kullanılamaz. Ancak Windows 10'dan başlayarak yerel tam ekran modu kullanılabilir.