2 Ağustos 2017 Çarşamba

Unicode

Giriş
Unicode karakterleri temsil etmek için UTF-8 , UTF-16, UTF-32 kodeklerinden herhangi birisi kullanılabilir.

Unicode Gösterimi
Unicode ile kullanılan sayılar geleneksel olarak hex'tir.\uFFFF hex şeklinde gösterilir.

Örnek - Eğlenceli Bir Hile
Java'da şöyle yaparız. // \u000d new line karakterine denk gelir.
// \u000d System.out.println(“abracadabra!”)
Yani kod aslında şöyledir. Dolayısıyla System.out çalışır
// \u000d System.out.println(“abracadabra!”)

Unicode Düzlemleri
Unicode Düzlemleri yazısına taşıdım.

Code Point - Kod Noktası
Şu anki unicode aralığı U+0000 - U+10FFFF arasında. Yani Unicode 8.0'da 1,114,111 karakter için yer var. Şu anda sadece 120,737 tane karakter kullanımdaKod Noktası bu aralıktaki (kod uzayı) bir sayıyı temsil ediyor.

Neden Code Point Lazım?
Unicode Standardı ilk çıktığında  kod uzayı bu kadar büyük değildi ve 16 bitlik kodeklerin bu kod uzayını temsil yeterli olacağı varsayılmıştı. Ancak daha sonra kod uzayı büyüyünce 16 bitten daha fazla yer kullanan yeni bir kodek kullanılmaya başlandı. Şu andaki 32 bit karakterler ise şöyle temsil edilirler.
Nevertheless, Unicode has come up with a solution for still using 16 bits to represent these characters. This solution implies the following:

16-bit high surrogates: 1,024 values (U+D800 to U+DBFF)
16-bit low surrogates: 1,024 values (U+DC00 to U+DFFF)
Java
Dolayısıyla Java'da eski 16 bit ve yeni 32 bit Code Point için metodlar var. String.chars() ve String.codePoints() Farkı yazısına bakabilirsiniz.

Bidirectional Sınıf
Bazı karakterler sağdan sola (İbranice, Arapça gibi) bazıları ise soldan sağa (Latin harfleri) yazılır. Bazı karakterler ise (rakamlar) tarafsızdır. Örneğin 0 rakamı eğer sağdan sola yazılan bir karakter varsa sola doğru yazılır. Yani hemen yanındaki karaktere bakarak yönü belirlenir.

Unicode Normalizasyonu
Unicode Normalizasyonu yazısına taşıdım

Karakter Setleri
Bir çok karakter seti mevcut. Java'daki character seti listesini buradan görebilirsiniz. 

Hiç yorum yok:

Yorum Gönder