UTF-8: Revizyonlar arasındaki fark

[kontrol edilmiş revizyon][kontrol edilmiş revizyon]
İçerik silindi İçerik eklendi
Srhat (mesaj | katkılar)
Değişiklik özeti yok
Srhat (mesaj | katkılar)
geliştirme
1. satır:
'''UTF-8''' 8-[[bit (bilişim)|bitlik]] bir [[Unicode]] dönüşüm biçimidir (İng: ''Unicode Transformation Format'' 'ın kısaltması). [[Unicode]] karakterlerini değişken uzunluklusayıda 8 bitten oluşan [[bayt]] guruplarıyla(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 bytebayt uzunluğunda diziler olarak kodlar. [[ASCII]] kodlaması içinde 0-127 arasında kalan karakterler, [[Unicode]] standardında aynı [[kod noktası|kod noktalarıyla]] ifade edildiğinden aynen kendi kodları ile kullanılır, diğerleri ise byte[[bayt]] dizileri haline gelir.
 
== Özellikleri ==
Karakterlerin her birinin kendilerine Unicode tarafıdan 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.
Evrensel kodlama ile aynı sayfada farklı lisanları göstermek mümkün olabilmektedir. Ayrıca özel hazırlanmış klavyeler ile matematiksel ifadeleri yazmak da mümkün. Bütün bu farklı karakterler UTF-8 sayesinde aynı sayfada görüntülenebilmektedir. Eski biçem kodlama ile Türkçe karakterlerin - aslında latin alfabesinde olmayan ya da özel işaretli harflerin de - gösterimi için oldukça karışık olan harf ve rakam dizgileri kullanmak gerekiyordu. Mesela Ş harfini yazmak için <nowiki>Ş</nowiki> küçük ş içinse <nowiki>ş</nowiki> yazmak gibi.
 
UTF-8 kodlama biçimi şu özellikleri taşımaktadır:
UTF kullanarak 1 milyondan fazla karakter kodlanılabilinmektedir. Sıklıkla kullanılan 65536 karakterin kodlaması bu 1 milyondan fazla kodlamada ilk sıralarda yer almaktadı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.
{| class="wikitable" style="width: 40%"
|-
!Kod noktasının<br>bit sayısı!!İlk<br>kod noktası!!Son<br>kod noktası!!Kod birimi<br> (bayt) sayısı!!1. Bayt!!2. Bayt!!3. Bayt!!4. Bayt!!5. Bayt!!6. Bayt
|-
!&nbsp;&nbsp;7
|U+0000||U+007F
|style="text-align: center;" |1
|<code>0xxxxxxx</code>
|-
!11
|U+0080||U+07FF
|style="text-align: center;" |2
|<code>110xxxxx</code>||<code>10xxxxxx</code>
|-
!16
|U+0800||U+FFFF
|style="text-align: center;" |3
|<code>1110xxxx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>
|-
!21
|U+10000||U+1FFFFF
|style="text-align: center;" |4
|<code>11110xxx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>
|-
| colspan=9 | Aşağıdaki kalıplar UTF-8 standardının parçası değildir. İlk taslağında mevcut olmasına karşın daha sonra Unicode kod noktalarının üst sınırı U+1FFFFF olarak belirlendiği için aşağıdaki kalıplara gerek kalmamıştır.
|-
!26
|U+200000||U+3FFFFFF
|style="text-align: center;" |5
|<code>111110xx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>
|-
!31
|U+4000000||U+7FFFFFFF
|style="text-align: center;" |6
|<code>1111110x</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>||<code>10xxxxxx</code>
|}
 
Buna göre ş harfinin UTF-8 ile nasıl kodlanacağını inceleyelim:
# ş harfinin Unicode kod noktası U+015F'tir.
# Kod noktası U+0800 ve U+FFFF aralığında olduğu için tabloya göre iki baytlık kalıbın içine sığmaktadır.
# On altı tabanındaki<code>015F</code> sayısı [[ikili sayı sistemi|iki tabanında]] <code>001 0101 1111</code> şeklinde gösterilmektedir. Sağdaki iki adet sıfır tablodaki kalıpta 11 bitlik boş yerin tamamını kaplamak için eklenmiştir.
# 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. (<code>110xxxxx</code>)
# Kalan beş hane kod noktamızın ilk beş hanesiyle doldurulur (<code>110{{fontcolor|blue|00101}}</code>).
# Mavi renkli kısım yerleştirildiği için kod noktamızdan geriye yeşil renkle gösterilen 6 hane kalmıştır (<code>{{fontcolor|green|001 01}}{{fontcolor|green|01 1111}}</code>).
# İkinci kod birimimiz kural gereği 10 ile başlamaktadır ve kalan 6 hanesi boştur. (<code>10xxxxxx</code>)
# Kalan 6 haneyi kod noktamızda kalan bitlerle doldurursak ikinci kod birimimiz (baytımız) de tamamlanmış olur (<code>10{{fontcolor|green|011111}}</code>).
# Kodlama tamamlanmıştır. U+015F kod noktalı "ş" karakteri UTF-8 kodlamasında <code>110{{fontcolor|blue|00101}} 10{{fontcolor|green|011111}}</code> şeklinde kodlanmaktadır. İki tabanındaki bu uzun bit dizilimi yazımı daha kolay olsun diye sıklıkla [[on altılı sayı sistemi|on altı tabanına]] dönüştürülerek <code>{{fontcolor|blue|C5}} {{fontcolor|green|9F}}</code> olarak gösterilir.
 
<!-- ÜZERİNDE ÇALIŞILMASI GEREKEN ÖRNEKLER
== Örnekler ==
 
Satır 15 ⟶ 67:
:⇔ = 0x21 0xd3<sub>8</sub> = 00100001 11010011<sub>2</sub> = ALT-tuşu + 1587
:α = 0x03 0xb1<sub>8</sub> = 00000011 10110001<sub>2</sub> = ALT-tuşu + 945
-->
 
== İlgili Bağlantılar ==
 
"https://tr.wikipedia.org/wiki/UTF-8" sayfasından alınmıştır