UTF-8: Revizyonlar arasındaki fark
[kontrol edilmiş revizyon] | [kontrol edilmiş revizyon] |
İçerik silindi İçerik eklendi
Değişiklik özeti yok |
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
UTF-8 kodlaması Unicode karakterlerini 1-6
== Ö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.
UTF-8 kodlama biçimi şu özellikleri taşı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.
{| 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
|-
! 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 ==
|