Uluslararasılaştırma
2.1 UTF-8 (RFC 3629)
UTF-8 (Unicode Transformation Format - 8bit) kodlaması UNICODE karakterlerini
1-6 byte uzunluğunda diziler olarak kodlar. ASCII kodlaması içinde
0-127 arasında kalan karakterler aynen kendi kodları ile kullanılır,
diğerleri ise byte dizileri haline gelir.
| U+00000000 - U+0000007F |
0xxxxxxx |
| U+00000080 - U+000007FF |
110xxxxx 10xxxxxx |
| U+00000800 - U+0000FFFF |
1110xxxx 10xxxxxx 10xxxxxx |
| U+00010000 - U+001FFFFF |
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
| U+00200000 - U+03FFFFFF |
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
| U+04000000 - U+7FFFFFFF |
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
10xxxxxx |
UTF-8 şu özellikleri taşır:
-
Her saf (0-127 arası karakterlerden oluşan) ASCII dizisi geçerli bir
UTF-8 dizisidir.
- 0 ile 127 arası değerler kendi karakter karşılıkları dışında dizilerde
geçmezler. Böylece örneğin '%', ':', '(', ')' gibi karakterleri parse
edip, diğer karakterleri aynen geçiren parser ve programlar (ayrıca
C printf benzeri fonksiyonları) diğer UNICODE karakterlerinden etkilenmezler.
- Sıfır değerli byte dizi içinde geçmez. Böylece strlen gibi fonksiyonlar
çalışmaya devam eder. Ancak gerçek karakter uzunluğu yerine byte uzunluğu
döndürmeye devam ettiklerine dikkat edilmelidir.
- Bir UTF-8 byte'ı bir karakterin kod dizisinin ilk byte'ı ise, kendisinden
sonra kaç byte geleceği hemen anlaşılır. Herhangi bir byte'ın bir
karakter kodunun dizisine ait olduğu tek bir bit kontrolü ile anlaşılır.
- Boyer-Moore hızlı metin arama algoritması UTF-8 ile kullanılabilir.
- UTF-8 - Unicode çevrimleri kolaydır.
- UTF-8 dizilerini başka bir karakter kodlaması bilgisi olmaması durumunda
istatistiksel olarak tesbit etmek kolaydır.
- MIME kodlamalarında ve başka yerlerde 'UTF-8' biçiminde yazılır.
- UTF-8 kullanan uygulamalar, güvenlik açısından her karakter dizisinin
geçerliliğini kontrol etmelidir. Her olası byte dizisi geçerli bir
UTF-8 dizisi değildir. Örnek olarak geçersiz UTF-8 dizisi 0xC0 0x80,
eğer normal UTF-8 çevrimi işlemine sokulursa sıfır karakter değerini
verir. Aynı şekilde 0x2F 0x2E 0x2E 0x2F (/../) yi yasaklayan bir program,
geçersiz 0x2F 0xC0 0xAE 0x2E 0x2F dizisi ile kandırılabilir. Bu sebepten
dışardan gelen her türlü UTF-8 dizisinin önce geçerliliği kontrol
edilmelidir.
UTF-8 geriye uyumluluk sağlaması ve Türkçe için en az bellek israfına
yol açması nedeniyle Uludağ projesinde öntanımlı karakter kodlaması
olarak tercih edilmiştir.