Movatterモバイル変換


[0]ホーム

URL:


İçeriğe atla
VikipediÖzgür Ansiklopedi
Ara

UTF-8

Vikipedi, özgür ansiklopedi

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

UTF-8 kodlaması Unicode karakterlerini 1-4 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 isebayt dizileri haline gelir.

Özellikleri

[değiştir |kaynağı değiştir]

Karakterlerin her birinin kendilerine Unicode tarafından atanan birkod 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ğrudantaban 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 sonraKen 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çilipx 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
  7U+0000U+007F10xxxxxxx
11U+0080U+07FF2110xxxxx10xxxxxx
16U+0800U+FFFF31110xxxx10xxxxxx10xxxxxx
21U+10000U+1FFFFF411110xxx10xxxxxx10xxxxxx10xxxxxx
26U+200000U+3FFFFFF5111110xx10xxxxxx10xxxxxx10xxxxxx10xxxxxx
31U+4000000U+7FFFFFFF61111110x10xxxxxx10xxxxxx10xxxxxx10xxxxxx10xxxxxx

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 çıkanRFC 3629 11 Ağustos 2015 tarihindeWayback Machine sitesindearşivlendi. standardı ile UTF-8'in üst sınırı U+10FFFF olarak belirlenmiştir. Bunun nedeni diğer bir karakter kodlama biçimi olanUTF-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 veISO 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ındakiASCII 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çin0dı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 adetbaşlatıcı bayt ve bir veya daha fazladevam baytı bulunmaktadır. Başlatıcı bayt, dizideki toplam bayt sayısı kadar1 ve daha sonra bir adet0 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ğrudan0 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 ve11110xxx 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şındaki1lerin 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 uzunlukluUTF-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ümLatin alfabeleri ve ayrıcaYunan,Kiril,Koptik,Ermeni,İbrani,Arap,Süryani ve Thaana alfabelerini veeklemlenebilen 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.ÇinJapon ve Kore karakterlerinden pek yaygın kullanılmayanlar, çeşitli tarihi yazı biçimleri, matematiksel simgeler veemojinin bulunduğu diğer Unicode düzlemlerindeki karakterler de dört bayt ile kodlanır.

Örnekler

[değiştir |kaynağı değiştir]

"ş" harfinin UTF-8 ile kodlanması

[değiştir |kaynağı değiştir]
  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ında001 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ında11000101 10011111 şeklinde kodlanmaktadır. İki tabanındaki bu uzun bit dizilimi yazımı daha kolay olsun diye sıklıklaon altı tabanına dönüştürülerekC59F olarak gösterilir.


Dış bağlantılar

[değiştir |kaynağı değiştir]
ISO/IEC 8859
Bibliyografik kullanım
  • ANSEL
  • ISO 5426 / 5426-2 / 5427 / 5428 /6438 / 6861 / 6862 / 10585 / 10586 / 10754 / 11822
  • MARC-8
Ulusal Standartlar
EUC
ISO/IEC 2022
MacOS kod sayfaları
  • Arapça
  • Basitleştirilmiş Çince /EUC-CN
  • Geleneksel Çince /Big5
  • Hırvatça
  • Kiril
  • Devanagari
  • Farsça
  • Yunanca
  • Gujarati dili
  • Gurmukhi dili
  • İbranice
  • İzlandaca
  • Japonca /Shift JIS
  • Korece /EUC-KR
  • Rumence
  • Sembol
  • Tay dili /TIS-620
  • Türkçe
  • Ukraynaca
DOS kod sayfaları
Platforma özgü
Unicode /ISO/IEC 10646
Diğer
İlgili konular

Kaynakça

[değiştir |kaynağı değiştir]
  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. 
"https://tr.wikipedia.org/w/index.php?title=UTF-8&oldid=36481668" sayfasından alınmıştır
Kategori:
Gizli kategoriler:

[8]ページ先頭

©2009-2026 Movatter.jp