Unicode (Evrensel Kod) Unicode Consortium organizasyonu tarafından geliştirilen ve her karaktere bir sayı değeri karşılığı atayan bir endüstri standardıdır. Sistemin amacı farklı karakter kodlama sistemlerinin birbiriyle tutarlı çalışmasını ve dünyadaki tüm yazım sistemlerinden metinlerin bilgisayar ortamında tek bir standart altında temsil edilebilmesini sağlamaktır. Evrensel Karakter Kümesi () olarak bilinen standardı ise, her iki organizasyonun işbirliği ile aynı sayısal karşılıkları taşımaktadır. Unicode, son sürümü itibarıyla 129 farklı modern ve tarihî yazım sistemine ait 120.000'den fazla karakteri ve emoji gibi çeşitli sembol kümelerini kapsamaktadır.
Standardın içinde karakterler ve karakterlere atanmış sayı değerlerinin tablolaştırılmış hali, bu sayılarının kodlanmasıyla ilgili kurum tarafından önerilen standart kodlama sistemleri ve bunların yanı sıra eşdeğer karakterler, karakterin bileşenlerine ayrılış bilgileri, sıralama kuralı, büyük-küçük harf bilgisi, yazılış yönü bilgisi gibi karakterin ekranda doğru gösterilebilmesi için yazılımların ihtiyaç duyduğu ek bilgiler bulunmaktadır. Haziran 2015 tarihi itibarıyla standardın en son sürümü olan Unicode 8.0 ile birlikte 7.716 yeni karakter eklemesi yapılmıştır
Unicode kodlarından oluşan karakter dizilerini (metinleri) bilgisayarda verimli bir biçimde saklayabilmek amacıyla çeşitli karakter kodlamaları geliştirilmiştir. Bunlardan en bilinenleri UTF-8, ve artık kullanımdan kalkmış olan UCS-2'dir.
Unicode öncesi
Harflerin bilgisayar ortamında saklanması ve taşınması ile ilgili geliştirilen ilk sistem ASCII sistemi olmuştur. Bu sistemde Amerikan İngilizcesi alfabesinde bulunan harflerin her birine bir sayı atanmış ve harfler bilgisayar ortamında sayı olarak saklanmıştır. Harflerin kodlanması için 7 bitlik baytlar kullanılmıştır. 7 bit ile yazılabilen en büyük sayı 127'dir ve 128 adet sayı (0 ile 127 arası) temel noktalama işaretleri ve Amerikan İngilizcesi harflerini kodlamak için yeterli olmuştur. Örneğin a harfi ASCII kodlamasında (on tabanında) 97 sayısıyla eşleştirilmiştir. Harflerin eşleştirildiği bu sayılar daha sonra Unicode tarafından kod noktası olarak adlandırılacaktır.
ASCII kodlaması kullanılmaya başladıktan sonra Latin alfabesi kullanan Avrupa ülkelerinin alfabelerindeki ü, ö veya ç gibi harflerin de kodlanması ihtiyacı ortaya çıktığından Genişletilmiş ASCII denilen yeni bir sistem kullanılmıştır. Bu sistemde harfleri kodlamak için kullanılan yedi bite bir bit daha eklenerek 8 bitlik baytlar kullanılmış ve dolayısıyla kodlanabilecek harf sayısı 27 = 128'den 28 = 256'ya çıkarılmıştır. İlk çıkarılan genişletilmiş ASCII kümesi olan (Latin-1 olarak da bilinir), Latin alfabesi kullanan Batı Avrupa dillerinin büyük çoğunluğunun harflerini karşılamaktadır. Daha sonra farklı dillerin alfabelerinde bulunan o dile özgü karakterler için farklı genişletilmiş ASCII kümeleri çıkarılmıştır. Bu farklı kümelere kod sayfası da denmektedir.
Ancak genişletilmiş ASCII sistemi de sorunu kökten çözmeyi başaramamıştır. Genişletilmiş ASCII'nin eksiklikleri şu iki maddeyle özetlenebilir:
- Farklı dillere özgü çoğu karakterin aynı metin içinde kullanılamaması
- İçinde binlerce farklı karakter bulunduran Çin Japon Kore dillerinin alfabelerini temsilde 256 karakterin yetersiz kalması
Birbirinden farklı ASCII kümelerinde bulunan dillerin karakterlerinin aynı metinde bulunması mümkün değildir. Çünkü 128 ve sonrasındaki sayılar her genişletilmiş ASCII kümesinde farklı karakterlere karşılık gelebilmektedirler. Eğer belgedeki kodlamanın hangi kod sayfasına göre yapıldığı belirtilmemişse metnin doğru okunması mümkün olmamaktadır. Örneğin İnternet üzerinde kodlama türünün belirtilmemiş olması veya yanlış belirtilmiş olması nedeniyle Türkçe karakterlerden ı, ş karakterlerinin ý, þ olarak görünmesinin nedeni Türkçe için üretilmiş olan Latin-5 kod sayfasında bu karakterlere karşılık gelen sayıların, İnternet tarayıcılarının kodlama türü belirtilmediğinde varsayılan olarak kullandığı Latin-1 kodlamasında İzlanda alfabesinden ý, þ karakterlerine karşılık gelmesi yüzündendir. Dolayısıyla diğer dillerin alfabeleri için bir çözüm olarak öne sürülen genişletilmiş ASCII sistemi de tam çözüm olamamıştır.
Farklı kod sayfaları arasında karışıklığa yol açması bir yana içinde binlerce farklı karakter barındıran Çince veya Japonca gibi dillerin harfleri için fazladan gelen 128 karakterlik kapasitenin de yeterli olması olanaksızdır. Bu yüzden ASCII sistemi yerini Unicode'a bırakmıştır. Ancak yine de yıllardan beri kullanılmış olması nedeniyle bu kodlamayla üretilmiş birçok yazılım, web sayfası bulunmaktadır. Unicode sistemi teşvik edilse de işletim sistemleri eski yazılım ve web sayfaları nedeniyle ASCII kodlamasını da Unicode ile birlikte hâlâ mecburen desteklemektedir.
Ortaya çıkışı
Unicode'un kökeni 1987'ye dek uzanmaktadır. Bu tarihte Xerox çalışanı Joe Becker ve Apple çalışanı Mark Davis evrensel bir karakter kümesi oluşturmanın sağlayacağı faydalar üzerinde çalışma yapmaktaydı. Ağustos 1988 tarihinde, Joe Becker "şimdilik Unicode olarak adlandırılan uluslararası/çokdilli metin karakteri kodlama sistemi" için bir teklif taslağı hazırladı. Unicode ismini eşsiz, tek ve evrensel bir kodlama sistemini çağrıştırması amacıyla seçtiğini belirtmiştir.
Unicode 88 başlıklı belgede Becker 16-bitlik bir karakter modeli taslağı hazırlamıştır:
Unicode, güvenilir ve üzerinde çalışılabilir dünya geneli bir metin kodlaması ihtiyacına cevap verme niyetiyle ortaya çıkmıştır. Unicode kabaca, dünyadaki bütün yaşayan dillerin tüm karakterlerini kapsayabilmesi amacıyla uzunluğu 16 bite çıkarılmış "geniş gövdeli bir ASCII" olarak tanımlanabilir. Mühendisliği düzgünce yapılan bir tasarımla, karakter başına 16 bit bu amaç için fazlasıyla yeterli olacaktır.
Orijinal 16-bitlik tasarım sadece günlük kullanıma dahil olan karakterlerin ve yazı türlerinin kodlanmasına ihtiyaç duyulacağını varsaymasından kaynaklanıyordu:
Unicode eskiden beri gelenleri korumaktansa geleceğe dönük yararlılığı garanti altına almayı yüksek öncelik edinmiştir. Unicode ilk olarak çağdaş metinlerde kullanılan karakterleri (yani 1988 yılında dünyada basılan gazete ve dergilerin kullandığı karakterlerin tümünü) hedeflemektedir ki bu karakterlerin sayısı şüphesiz 214 = 16.384'ü geçmez. Çağdaş kullanım dahilinde olan karakterlerin dışında kalan diğer karakterlerin eskimiş olduğu veya ender kullanıldığı kabul edilebilir. Çoğunlukla kullanışlı karakterleri barındıran Unicode'u bu eski ve nadir karakterlerle kalabalıklaştırmak yerine bu karakterleri özel kullanım kayıtlarına dahil etmek daha iyidir.
1989 yılının başlarında Unicode çalışma grubu Metaphor'dan Ken Whistler ve Mike Kernaghan, Research Libraries Group'tan Karen Smith-Yoshimura ve Joan Aliprand ve Sun Microsystems'tan Glenn Wright da bulunacak şekilde genişletildi. 1990 yılında Microsoft'tan Michel Suignard ve Asmus Freytag ve NeXT'ten Rick McGowan da gruba katıldı. 1990'ın sonlarına doğru mevcut kodlama standartlarındaki karakterlerin eşlenmesi çalışmaları tamamlanmış ve Unicode'un gözden geçirilecek son taslağı hazırlanmıştı.
Unicode Consortium 3 Ocak 1991'de California'da kuruldu. Ekim 1991'de Unicode standardının ilk cildi yayımlandı. Han ideograflarını içeren ikinci cildi de Haziran 1992'de yayımlandı.
1996'da Unicode 2.0'da yedek karakter mekanizması uygulanmaya başladı. Bu sayede Unicode artık 16 bit ile sınırlanmamış oldu. Yedek karakter çiftlerinin kullanılmasıyla Unicode kod alanı bir milyon kod noktasını bulundurarak kadar genişledi. Böylece Unicode, Mısır hiyeroglifleri veya Göktürk alfabesi gibi birçok tarihi yazı sistemlerini ve kodlamasına ihtiyaç duyulmayacağı tahmin edilen, artık kullanılmayan eskimiş karakterleri destekler hale geldi. Unicode tarafından desteklenmesi ilk başta planlanmamış olan karakterler arasında nadiren kullanılan Kanji karakterleri ve Çince karakterler de bulunmaktadır. Bu karakterler artık kullanılmayan kişi veya yer isimlerinin parçası olduklarından nadiren kullanılıyordu ancak orijinal Unicode mimarisinde düşünülenden çok daha önemli karakterlerdir.
Mimari ve terminoloji
Unicode, 016 ile 10FFFF16 arasındaki sayılara karşılık gelen 1.114.112 adet kod noktasından oluşan bir kod alanı tanımlamıştır. Kod noktası Unicode tarafından her bir karaktere atanan sayıdır ve bu sayı genelde on altı tabanında, hekzadesimal gösterim adı verilen, 10-15 arası rakamların A-F arası harflerle temsil edildiği bir gösterim yöntemiyle yazılır. Normalde Unicode kod noktaları "U+" ve sonrasında kod noktasının on altı tabanındaki karşılığı ile ifade edilir. Kod noktalarının beşinci ve altıncı haneleri birlikte düzlem (plane) numarasını ifade etmektedir, toplamda on yedi adet düzlem bulunmaktadır (016'dan 1016'a kadar). İlk düzlem olan (Basic Multilingual Plane, kısaca BMP) sıfırıncı düzlem olduğundan bu düzlemdeki karakterlerin kod noktaları yazılırken beşinci hanedeki 0 yazılmadan dört haneli şekilde yazılırlar (mesela Unicode tanımı latin capital letter x olan X harfinin kod noktası U+000058 yerine kısaca U+0058 olarak ifade edilir), BMP dışındaki düzlemlerde bulunan kod noktaları başında düzlem numarası yazılarak ifade edilir. Dolayısıyla toplamda beş veya altı haneli olarak yazılırlar. (örneğin language tag adlı karakterinin kod noktası U+E0001, Emoji karakterlerinden grinning face adlı 😀 karakterinin kod noktası U+1F600 olarak ifade edilmektedir). Unicode standardının eski sürümlerinde de benzer yazım şekilleri kullanılıyordu ancak ufak farklılıklar bulunmaktaydı. Örneğin Unicode 3.0 standardında kod noktaları yazılırken sekiz haneli kod noktasının önüne "U-" getirilirdi. (Kod birimleri) yazılırken önüne "U+" konularak yazılırdı.
Kod noktası düzlemleri ve blokları
Unicode kod alanı 0'dan 16'ya kadar numaralanmış on yedi adet düzleme (plane) ayrılmıştır:
BMP düzleminde bulunan tüm kod noktaları kodlamasında tek kod birimiyle ve UTF-8 kodlamasında da değişken uzunlukta kod birimleriyle (bir, iki veya üç) kodlanabilir. UTF-16 kodlamasında kod birimleri 16-bit (iki bayta karşılık gelir), UTF-8'de 8-bit (bir bayta karşılık gelir) uzunluğundadır. 1'den 16'ya kadar olan düzlemlerdeki kod noktaları (tamamlayıcı düzlemler, supplementary plane) UTF-8 kodlamasında dört kod birimi ile ve UTF-16'da yedek çiftler veya yer tutucu çiftler (surrogate pairs) denilen bir sistem ile iki kod birimi halinde kodlanırlar.
Her düzlem, blok adı verilen bölümlere ayrılmıştır ve her blokta o blokla ilgili karakterler bulunur. Blokların kapsadığı kod noktalarının sayısı (yani blokların büyüklüğü) değişken olmakla birlikte bu sayı her zaman 16'nın ve genelde de 128'in katıdır. Aynı yazı türünde bulunan karakterler farklı bloklara dağılmış olabilir.
Karakterin Genel Kategorisi
Her kod noktasının adlı bir niteliği bulunmaktadır. Temel kategoriler şunlardır: Harf (Letter), İm (Mark), Sayı (Number), Noktalama (Punctuation), Sembol (Symbol), Ayırıcı (Seperator) ve Diğer (Other). Bu kategorilerin alt bölümleri de bulunmaktadır. Genel Kategori niteliği her zaman kullanışlı değildir; çünkü eski kodlama sistemleri tek kod noktasına birden fazla özellik yüklemiştir. Örneğin U+000A <control-000A> LINE FEED (SATIR ATLATMA) karakteri ASCII sisteminde hem kontrol hem de düzen ayırıcısı karakteri olarak kullanılmıştır, Unicode'da bu karakterin Genel Kategori niteliği "Diğer, Kontrol" olarak tanımlanmıştır. Bir kod noktasının özelliklerinin ve davranışının tam olarak belirlenebilmesi için diğer niteliklerin de dikkate alınması gerekmektedir. Mevcut Genel Kategoriler şunlardır:
Genel Kategori (Unicode ) | |||||
---|---|---|---|---|---|
Değer | Büyük, küçük kategoriler | Temel tür | Atanmış karakter | Sabit | Yorumlar |
Harf (Letter) | |||||
Lu | Harf, büyük harf | Çizgesel (Graphic) | Var | ||
Ll | Harf, küçük harf | Çizgesel | Var | ||
Lt | Harf, ilk harf büyük | Çizgesel | Var | Büyük ve küçük harflerden oluşan bağlı harfler (Dž, Lj, Nj, ve Dz gibi) | |
Lm | Harf, niteleyici | Çizgesel | Var | ||
Lo | Harf, diğer | Çizgesel | Var | ||
İm (Mark) | |||||
Mn | İm, boşluksuz | Çizgesel | Var | ||
Mc | İm, boşluklu birleşen | Çizgesel | Var | ||
Me | İm, çevreleyen | Çizgesel | Var | ||
Sayı (Number) | |||||
Nd | Sayı, onluk rakam | Çizgesel | Var | Sadece bu kategorideki karakterler = De niteliğine sahiptir | |
Nl | Sayı, harf | Çizgesel | Var | Harflerden veya harf benzeri karakterlerden oluşan sayılar (mesela Roma rakamları) | |
No | Sayı, diğer | Çizgesel | Var | Basit kesirler, üst simge veya alt simge şeklinde yazılan rakamlar | |
Noktalama (Punctuation) | |||||
Pc | Noktalama, bağlayıcı | Çizgesel | Var | "_" alt çizgi karakterini içerir | |
Pd | Noktalama, tire | Çizgesel | Var | Birçok tire imi karakterlerini içerir | |
Ps | Noktalama, açan | Çizgesel | Var | Açan ayraç karakterleri | |
Pe | Noktalama, kapatan | Çizgesel | Var | Kapatan ayraç karakterleri | |
Pi | Noktalama, açan tırnak | Çizgesel | Var | Açan tırnak işareti. ASCII "nötr" tırnak işaretini içermez. Kullanıma bağlı olarak Ps veya Pe olarak davranır | |
Pf | Noktalama, kapatan tırnak | Çizgesel | Var | Kapatan tırnak işareti. Kullanıma bağlı olarak Ps veya Pe olarak davranır | |
Po | Noktalama, diğer | Çizgesel | Var | ||
Sembol (Symbol) | |||||
Sm | Sembol, matematik | Çizgesel | Var | ||
Sc | Sembol, para birimi | Çizgesel | Var | ||
Sk | Sembol, niteleyici | Çizgesel | Var | ||
So | Sembol, diğer | Çizgesel | Var | ||
Ayırıcı (Seperator) | |||||
Zs | Ayırıcı, boşluk | Çizgesel | Var | Boşluk karakterini, SEKME (TAB), satır başı ve satır atlatma gibi Cc karakterlerini içerir | |
Zl | Ayırıcı, satır | Biçimlendirme | Var | Sadece U+2028 LINE SEPARATOR (SATIR AYIRICISI) ({{{no}}}) | |
Zp | Ayırıcı, paragraf | Biçimlendirme | Var | SadeceU+2029 PARAGRAPH SEPARATOR (PARAGRAF AYIRICISI) ({{{no}}}) | |
Diğer (Other) | |||||
Cc | Diğer, kontrol | Kontrol | Var | Sabit 65 | Adsız, <control> |
Cf | Diğer, biçimlendirme | Biçimlendirme | Var | Satır sonu çizgisini, çift yönlü metinleri desteklemek için gereken kontrol karakterlerini ve dil etiketi karakterlerini içerir | |
Cs | Diğer, yedek | Yedek | Yok (soyut) | Sabit 2048 | Adsız, <surrogate> |
Co | Diğer, özel kullanım | Özel kullanım | Yok (soyut) | Sabit 'de 6.400, 131.068 tane | Adsız, <private-use> |
Cn | Diğer, atanmamış | Yok | Yok | Sabit 66 | Adsız, <noncharacter> |
Ayrılmış (Reserved) | Yok | Sabit değil | Adsız, <reserved> | ||
|
U+D800..U+DBFF aralığında bulunan 1.024 kod noktası üst yedek kod noktaları olarak ve U+DC00..U+DFFF aralığında 1.024 kod noktası da alt yedek kod noktaları olarak bilinir. Üst yedek kod noktası (veya öndeki kod noktası) ve sonrasında gelen alt kod noktasının (veya arkadaki kod noktası) oluşturduğu çifte yedek çifti denir bu yedek çiftleri kodlaması tarafından BMP'nin dışında kalan kod noktalarını kodlamak için kullanılır. kodlaması kod noktalarını iki bayttan oluşan birimler halinde kodlamaktadır, iki bayt ile kodlanabilecek en büyük sayı FFFF16 (6553510) olduğundan U+FFFF'nin sonrasındaki kod noktalarını ifade etmek için U+D800'den U+DFFF'ye kadar olan kod noktaları Unicode tarafından yedek kod noktaları olarak kullanılmak üzere ayrılmıştır. Bu kod noktaları çiftler halinde kullanılarak BMP dışında kalan 1.048.560 karakteri UTF-16 ile kodlamaya fazlasıyla yetmektedir (1.024 * 1.024 = 1.048.576 adet yedek çifti kombinasyonu vardır). Üst ve alt yedek kod noktaları tek başlarına anlamsız ve geçersizdir. Çiftler halinde kullanıldıkları zaman bir karakteri temsil ederler. Dolayısıyla, yedek çifti olarak kullanılmak üzere ayrılmış olan U+D800..U+DFFF aralığındaki kod noktaları U+10000..U+10FFFF aralığındaki kod noktalarının yerini tutmak amacıyla kullanıldığından, karakter olarak kullanılabilecek kod noktaları yedek kod noktaları dışında kalan kod noktalarıdır (U+0000..U+D7FF ve U+E000..U+10FFFF aralığında kalan 1.112.064 kod noktası). Karakter olarak kullanılabilecek kod noktalarına aynı zamanda karakterin skaler değeri de denmektedir. Örneğin UTF-16'da yedek çiftleri kullanılarak (D803 DC00)16 olarak kodlanan U+10C00 𐰀 OLD TURKIC LETTER ORKHON A karakterinin skaler değeri U+10C00'dır denir. Çünkü (D803 DC00)16 yedek çifti 10C0016 sayısını temsil eder.
Unicode bazı kod noktalarına ne şimdi ne de gelecekte herhangi bir karakter atamayacağını duyurmuştur. Karakter dışı kod noktaları Unicode şartnamesinde noncharacter olarak adlandırılmaktadır. Karakter dışı kod noktaları yazılımların iç yapısında herhangi bir amaçla kullanılabilir. Toplamda 66 adet karakter dışı kod noktası bulunmaktadır. U+FDD0..U+FDEF aralığındaki kod noktaları ve her düzlemin son iki kod noktası (yani U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, ... U+10FFFE, U+10FFFF). Karakter dışı kod noktaları sabittir, ileride yeni karakter dışı kod noktası tanımlanmayacaktır.
Ayırtılmış (reserved) kod noktaları da ileride kodlama karakteri olarak kullanılacak olan ama henüz Unicode tarafından kendilerine karakter atanmamış kod noktalarıdır.
Özel kullanım kod noktaları da karakter olarak kullanılabileceği belirtilen ancak hangi karakteri temsilen kullanılacakları Unicode tarafından belirtilmeyip kullanıcıya bırakılmış olan karakterlerdir. Yani bu karakterler yazılı bilgi alışverişi esnasında taraflar arasında önceden yapılmış bir anlaşamaya göre yorumlanabilecek karakterlerdir. Unicode kod alanında üç adet özel kullanım bölgesi vardır:
- Özel Kullanım Alanı: U+E000..U+F8FF (6.400 karakter)
- Tamamlayıcı Özel Kullanım Alanı-A: U+F0000..U+FFFFD (65.534 karakter)
- Tamamlayıcı Özel Kullanım Alanı-B: U+100000..U+10FFFD (65.534 karakter).
Çizgesel karakterler (graphic characters), Unicode tarafından tanımlanan, belirli bir anlamsal değeri olan ve görünür bir glif şekline sahip veya görünür bir boşluğu temsil eden karakterlerdir. Unicode 7.0 itibarıyla 112.804 çizgesel karakter vardır.
Biçimlendirme karakterleri ise görünür bir şekilleri olmayan ancak komşu karakterlerin görünüşünü veya davranışını etkileyen karakterlerdir. Örneğin U+200C ZERO WIDTH NON-JOINER karakteri ve U+200D ZERO WIDTH JOINER karakteri bitişebilen karakterlerin bitişme durumunu belirlemek için kullanılabilir. Unicode 7.0'da 152 biçimlendirme karakteri bulunmaktadır. Başka bir örnek vermek gerekirse metin dosyalarında bilgisayarlarda ↵ Enter tuşuna basarak yapılan alt satıra geçme işlemi sırasında metne U+000A <control-000A> ({{{no}}}) ve U+000D <control-000D> ({{{no}}}) karakterleri işlenir, bu karakterler metin üzerinde görünür bir yer kaplamadığı halde kendilerinden sonra gelen karakterlerin alt satırda görüntülenmesini sağladıkları için kontrol işlevi görür ve çizgesel karakter sınıfına girmez.
Altmış altı kod noktası (U+0000..U+001F ve U+007F.. U+009F aralıkları) kontrol kodları olarak ayrılmıştır ve ISO/IEC 6429 standardıyla belirlenen C0 ve C1 kontrol kodlarına karşılık gelir. Unicode'la uyumlu kodlamalarda bu kontrol karakterlerinden U+0009 <control-0009> ({{{no}}}), U+000A <control-000A> ({{{no}}}) ve U+000D <control-000D> ({{{no}}}) karakterleri sıklıkla kullanılır.
Çizgesel karakterler, biçimlendirme karakterleri ve kontrol kodu karakterleri hep beraber atanmış karakterler olarak bilinir.
Soyut karakterler
Soyut karakter, metinsel bir verinin düzenlenmesi, denetlenmesi veya temsil edilmesi için kullanılan bilgi birimi olarak tanımlanmıştır. Soyut karakterin bir kod noktasıyla eşleştirilmiş haline kodlu karakter denir ve kodlu karakterler genelde kısaca karakter olarak anılır. Soyut karakterler, karakterlerin temsil ettikleri bilginin soyut, yani şekil almamış halini temsil eder. Unicode standardında tek bir kod noktasıyla ifade edilebilen bir soyut karakter aynı zamanda birden fazla kod noktasının yan yana kullanılmasıyla da alternatif olarak temsil edilebilir. Örneğin â harfi, Unicode tanımı U+00E2 â LATIN SMALL LETTER A WITH CIRCUMFLEX kod noktasıyla ifade edilebileceği gibi U+0061 a LATIN SMALL LETTER A ve U+0302 ̂ COMBINING CIRCUMFLEX ACCENT kod noktalarının yan yana kullanılmasıyla da ifade edilebilir. İki farklı şekilde de aynı görüntü ortaya çıkacaktır: U+00E2 â ve U+0061 U+0302 â. Bu karakterler kodlamaları itibarıyla farklı olmalarına rağmen aynı soyut karakteri temsil etmektedir. Birisi tek bir kod noktasından oluşurken diğeri harfin parçalarına karşılık gelen kod noktalarının birleştirilmesiyle ifade edilir. Ancak bazı soyut karakterlerin Unicode standardında tek kod noktasıyla karşılığı yoktur. Bu yüzden bu soyut karakterler birden fazla kod noktasının art arda kullanılmasıyla ifade edilebilirler. Unicode yalnızca iki kod noktasının kombinasyonuyla ifade edilebilen soyut karakterlerin bir listesini sitesinde barındırmaktadır.
Ayrıca, diğer standartlarla uyumluluk sağlamak için bazen aynı soyut karakter birden çok tekil kodlanmış karaktere karşılık gelebilir. Bu durum aynı karakterin birden fazla kod noktasının birleşimi şeklinde gösterilmesinden farklıdır. Mesela Å karakteri Unicode standardında U+00C5 Å LATIN CAPITAL LETTER A WITH RING ABOVE kod noktasıyla temsil edilmektedir. Ancak aynı soyut karakteri temsil eden U+212B Å ANGSTROM SIGN adlı bir kod noktası da bulunmaktadır.
Tüm çizgesel karakterler, biçimlendirme karakterleri ve özel kullanım karakterlerinin eşsiz ve değişmez bir tanımlayıcı adı vardır. İsimlerin değişmezliği Unicode sürüm 2.0'dan itibaren İsim Kararlılığı Politikası ile garanti altına alınmıştır . Tanımlayıcı adın ciddi derecede sorunlu ve yanıltıcı olduğu veya önemli yazım hataları içerdiği durumlarda resmi bir ikincil ad tanımlanabilir ve uygulamaların resmi karakter adı yerine resmi ikincil adı kullanmaları tavsiye edilir. Örneğin Yi yazısına ait karakterlerden yanlış adlandırılan U+A015 ꀕ YI SYLLABLE WU karakterine daha sonra yi syllable iteration mark (yi hece yineleme işareti) şeklinde ikincil bir ad tanımlanmıştır. U+FE18 ︘ PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET ({{{no}}}) karakteri daha sonra ikincil ad olarak presentation form for vertical right white lenticular bracket adını almıştır.
Karakter kodlamaları
Eskiden karakter kodlaması kavramı hem her karaktere birer sayı atama hem de bu sayıları doğrudan iki tabanına dönüştürüp bilgisayarda kullanılabilir hale getirme işlemine verilen isimdi. Bu yüzden Unicode'dan önce kullanılan ASCII ve tüm (genişletilmiş ASCII) sistemleri birer karakter kodlamasıdır. Unicode'dan sonra ise karakter kodlaması kavramı değişmiştir. Unicode, karakterlere sayı atanmasıyla bu sayıların iki tabanına dönüştürülmesi işlemini birbirinden ayırmıştır. Çünkü Unicode ile beraber karakterlere atanan sayıları (kod noktalarını) doğrudan iki tabanına dönüştürmektense farklı yöntemler kullanarak dönüştürme ihtiyacı ortaya çıkmıştır. Dolayısıyla Unicode'dan sonra karakter kodlaması kavramı kod noktalarını iki tabanında temsil etme yöntemini karşılar olmuştur.
Tanımda meydana gelen bu değişikliğin nedeni, Unicode'un genişletilmiş ASCII kümelerinin karakterlere atamak için kullandığı [0, 255] olan sayı aralığını [0, 1.114.111]'e çıkarmasında yatmaktadır. Unicode'dan önceki sistemlerde karakterlere atanan sayılar 255'i aşmadığı için, bu sayılar doğrudan iki tabanına çevrilip karakterleri temsil etmek için kullanılabiliyordu. Örneğin ASCII sistemlerinde a harfi 9710 sayısıyla eşleştirilmişti ve herhangi bir metin belgesinde a harfi kodlanacağı zaman 9710 iki tabanına dönüştürülüp 11000012 şeklinde 8-bitlik bir bayt olarak depolanıyordu. Sayılar 255'i aşmadığı için her karakter 1 bayta sığmaktaydı. Ancak Unicode sisteminde 255'ten büyük sayılar iki tabanında 8 biti aşmaktadır ve eğer 1.114.111 sayının hepsi eşit uzunlukta olacak şekilde doğrudan iki tabanına dönüştürülüp kullanılmak istenirse her karakterin 32 bit uzunluğunda olması, iki tabanına dönüştürüldüğünde 32 bitten kısa olan sayıların da başına sıfır eklenerek 32 bite tamamlanması gerekir. Çünkü her karakterin uzunluğu sabit olmazsa kodlamada bir karakterin nerede bitip diğerinin nerede başladığı anlaşılamaz. Bu durum genişletilmiş ASCII'ye göre kodlanmış bir metne göre Unicode ile kodlanmış bir metnin dört kat kadar fazla yer kaplamasına neden olacaktır.
Her karakterin eşit uzunlukta bitlerle temsil edilmesi zorunluluğundan kurtulmak istenirse karakterlerin kod noktalarını iki tabanına dönüştürürken araya karakterin başlangıcını veya sonunu belli edecek işaretler eklenerek kodlama yapılması gerekecektir. Bu işlem için geliştirilen birkaç farklı kodlama sistemi bulunmaktadır. Bunlara örnek olarak UTF-8, ve gösterilebilir. Bunların her biri, karakterlerin kod noktalarını (yani Unicode tarafından kendilerine atanan sayıları) bilgisayar ortamında saklamak ve üzerinde işlem yapmak amacıyla iki tabanına dönüştürürken farklı yöntemler kullanırlar. Her birinin farklı avantajları ve dezavantajları mevcuttur. Günümüzde en yaygın kullanılan kodlama UTF-8 kodlamasıdır.
Dış bağlantılar
- Unicode Consortium5 Şubat 2005 tarihinde Wayback Machine sitesinde .
- Standardlar
- RFC 3629
- RFC 3492
- Unicode karakterleri topluca bulabileceğiniz bir site. 5 Aralık 2008 tarihinde Wayback Machine sitesinde .
- Emojiler ve Unicode'ları 28 Mayıs 2019 tarihinde Wayback Machine sitesinde .
Ayrıca bakınız
Kaynakça
- ^ "The Unicode Standard: A Technical Introduction (Unicode Standardı: Teknik Tanıtım)" (İngilizce). 31 Aralık 2015 tarihinde kaynağından . Erişim tarihi: 16 Mart 2010.
- ^ "Unicode 8.0.0, Summary" (İngilizce). 28 Haziran 2016 tarihinde kaynağından . Erişim tarihi: 6 Temmuz 2015.
- ^ "Özet Hikaye (İngilizce)" (İngilizce). 21 Nisan 2016 tarihinde kaynağından . Erişim tarihi: 15 Mart 2010.
- ^ a b c Joseph D. Becker (29 Ağustos 1988). "Unicode 88" (PDF) (İngilizce). 28 Mayıs 2016 tarihinde kaynağından (PDF). Erişim tarihi: 20 Temmuz 2014.
- ^ Stephen J Searle. . 8 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Ocak 2013.
- ^ (İngilizce). 26 Aralık 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 16 Mart 2010.
- ^ "Unicode Standardı, Sürüm 6.0, s. 62, Karakter Kodlama Biçimleri" (PDF) (İngilizce). 8 Ağustos 2012 tarihinde kaynağından (PDF). Erişim tarihi: 4 Haziran 2012.
- ^ a b (İngilizce). 10 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 16 Mart 2010.
- ^ "Nitelikler" (PDF) (İngilizce). 7 Nisan 2010 tarihinde kaynağından (PDF). Erişim tarihi: 16 Mart 2010.
- ^ (İngilizce). 15 Aralık 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 16 Mart 2010.
- ^ (İngilizce). 27 Kasım 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 16 Mart 2010.
- ^ (İngilizce). 28 Mayıs 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 16 Mart 2010.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Unicode Evrensel Kod Unicode Consortium organizasyonu tarafindan gelistirilen ve her karaktere bir sayi degeri karsiligi atayan bir endustri standardidir Sistemin amaci farkli karakter kodlama sistemlerinin birbiriyle tutarli calismasini ve dunyadaki tum yazim sistemlerinden metinlerin bilgisayar ortaminda tek bir standart altinda temsil edilebilmesini saglamaktir Evrensel Karakter Kumesi olarak bilinen standardi ise her iki organizasyonun isbirligi ile ayni sayisal karsiliklari tasimaktadir Unicode son surumu itibariyla 129 farkli modern ve tarihi yazim sistemine ait 120 000 den fazla karakteri ve emoji gibi cesitli sembol kumelerini kapsamaktadir Unicode logosuUnicode un Temel Cokdilli Duzlem BMP grafiksel bir gosterimi Numaralandirilmis her kutu 256 kod noktasini temsil etmektedir Unicode un Tamamlayici Cokdilli Duzlem SMP grafiksel gosterimi Numaralandirilmis her kutu 256 kod noktasini temsil etmektedir Unicode un Tamamlayici Ideografik Duzlem SIP grafiksel bir gosterimi Numaralandirilmis her kutu 256 kod noktasini temsil etmektedir Unicode un Tersiyer Ideografik Duzleminin TIP grafiksel bir gosterimi Numaralandirilmis her kutu 256 kod noktasini temsil etmektedir Unicode un Tamamlayici Ozel Amacli Duzlem SSP grafiksel bir gosterimi Numaralandirilmis her kutu 256 kod noktasini temsil etmektedir Standardin icinde karakterler ve karakterlere atanmis sayi degerlerinin tablolastirilmis hali bu sayilarinin kodlanmasiyla ilgili kurum tarafindan onerilen standart kodlama sistemleri ve bunlarin yani sira esdeger karakterler karakterin bilesenlerine ayrilis bilgileri siralama kurali buyuk kucuk harf bilgisi yazilis yonu bilgisi gibi karakterin ekranda dogru gosterilebilmesi icin yazilimlarin ihtiyac duydugu ek bilgiler bulunmaktadir Haziran 2015 tarihi itibariyla standardin en son surumu olan Unicode 8 0 ile birlikte 7 716 yeni karakter eklemesi yapilmistir Unicode kodlarindan olusan karakter dizilerini metinleri bilgisayarda verimli bir bicimde saklayabilmek amaciyla cesitli karakter kodlamalari gelistirilmistir Bunlardan en bilinenleri UTF 8 ve artik kullanimdan kalkmis olan UCS 2 dir Unicode oncesiHarflerin bilgisayar ortaminda saklanmasi ve tasinmasi ile ilgili gelistirilen ilk sistem ASCII sistemi olmustur Bu sistemde Amerikan Ingilizcesi alfabesinde bulunan harflerin her birine bir sayi atanmis ve harfler bilgisayar ortaminda sayi olarak saklanmistir Harflerin kodlanmasi icin 7 bitlik baytlar kullanilmistir 7 bit ile yazilabilen en buyuk sayi 127 dir ve 128 adet sayi 0 ile 127 arasi temel noktalama isaretleri ve Amerikan Ingilizcesi harflerini kodlamak icin yeterli olmustur Ornegin a harfi ASCII kodlamasinda on tabaninda 97 sayisiyla eslestirilmistir Harflerin eslestirildigi bu sayilar daha sonra Unicode tarafindan kod noktasi olarak adlandirilacaktir ASCII kodlamasi kullanilmaya basladiktan sonra Latin alfabesi kullanan Avrupa ulkelerinin alfabelerindeki u o veya c gibi harflerin de kodlanmasi ihtiyaci ortaya ciktigindan Genisletilmis ASCII denilen yeni bir sistem kullanilmistir Bu sistemde harfleri kodlamak icin kullanilan yedi bite bir bit daha eklenerek 8 bitlik baytlar kullanilmis ve dolayisiyla kodlanabilecek harf sayisi 27 128 den 28 256 ya cikarilmistir Ilk cikarilan genisletilmis ASCII kumesi olan Latin 1 olarak da bilinir Latin alfabesi kullanan Bati Avrupa dillerinin buyuk cogunlugunun harflerini karsilamaktadir Daha sonra farkli dillerin alfabelerinde bulunan o dile ozgu karakterler icin farkli genisletilmis ASCII kumeleri cikarilmistir Bu farkli kumelere kod sayfasi da denmektedir Ancak genisletilmis ASCII sistemi de sorunu kokten cozmeyi basaramamistir Genisletilmis ASCII nin eksiklikleri su iki maddeyle ozetlenebilir Farkli dillere ozgu cogu karakterin ayni metin icinde kullanilamamasi Icinde binlerce farkli karakter bulunduran Cin Japon Kore dillerinin alfabelerini temsilde 256 karakterin yetersiz kalmasi Birbirinden farkli ASCII kumelerinde bulunan dillerin karakterlerinin ayni metinde bulunmasi mumkun degildir Cunku 128 ve sonrasindaki sayilar her genisletilmis ASCII kumesinde farkli karakterlere karsilik gelebilmektedirler Eger belgedeki kodlamanin hangi kod sayfasina gore yapildigi belirtilmemisse metnin dogru okunmasi mumkun olmamaktadir Ornegin Internet uzerinde kodlama turunun belirtilmemis olmasi veya yanlis belirtilmis olmasi nedeniyle Turkce karakterlerden i s karakterlerinin y th olarak gorunmesinin nedeni Turkce icin uretilmis olan Latin 5 kod sayfasinda bu karakterlere karsilik gelen sayilarin Internet tarayicilarinin kodlama turu belirtilmediginde varsayilan olarak kullandigi Latin 1 kodlamasinda Izlanda alfabesinden y th karakterlerine karsilik gelmesi yuzundendir Dolayisiyla diger dillerin alfabeleri icin bir cozum olarak one surulen genisletilmis ASCII sistemi de tam cozum olamamistir Farkli kod sayfalari arasinda karisikliga yol acmasi bir yana icinde binlerce farkli karakter barindiran Cince veya Japonca gibi dillerin harfleri icin fazladan gelen 128 karakterlik kapasitenin de yeterli olmasi olanaksizdir Bu yuzden ASCII sistemi yerini Unicode a birakmistir Ancak yine de yillardan beri kullanilmis olmasi nedeniyle bu kodlamayla uretilmis bircok yazilim web sayfasi bulunmaktadir Unicode sistemi tesvik edilse de isletim sistemleri eski yazilim ve web sayfalari nedeniyle ASCII kodlamasini da Unicode ile birlikte hala mecburen desteklemektedir Ortaya cikisiUnicode un kokeni 1987 ye dek uzanmaktadir Bu tarihte Xerox calisani Joe Becker ve Apple calisani Mark Davis evrensel bir karakter kumesi olusturmanin saglayacagi faydalar uzerinde calisma yapmaktaydi Agustos 1988 tarihinde Joe Becker simdilik Unicode olarak adlandirilan uluslararasi cokdilli metin karakteri kodlama sistemi icin bir teklif taslagi hazirladi Unicode ismini essiz tek ve evrensel bir kodlama sistemini cagristirmasi amaciyla sectigini belirtmistir Unicode 88 baslikli belgede Becker 16 bitlik bir karakter modeli taslagi hazirlamistir Unicode guvenilir ve uzerinde calisilabilir dunya geneli bir metin kodlamasi ihtiyacina cevap verme niyetiyle ortaya cikmistir Unicode kabaca dunyadaki butun yasayan dillerin tum karakterlerini kapsayabilmesi amaciyla uzunlugu 16 bite cikarilmis genis govdeli bir ASCII olarak tanimlanabilir Muhendisligi duzgunce yapilan bir tasarimla karakter basina 16 bit bu amac icin fazlasiyla yeterli olacaktir Orijinal 16 bitlik tasarim sadece gunluk kullanima dahil olan karakterlerin ve yazi turlerinin kodlanmasina ihtiyac duyulacagini varsaymasindan kaynaklaniyordu Unicode eskiden beri gelenleri korumaktansa gelecege donuk yararliligi garanti altina almayi yuksek oncelik edinmistir Unicode ilk olarak cagdas metinlerde kullanilan karakterleri yani 1988 yilinda dunyada basilan gazete ve dergilerin kullandigi karakterlerin tumunu hedeflemektedir ki bu karakterlerin sayisi suphesiz 214 16 384 u gecmez Cagdas kullanim dahilinde olan karakterlerin disinda kalan diger karakterlerin eskimis oldugu veya ender kullanildigi kabul edilebilir Cogunlukla kullanisli karakterleri barindiran Unicode u bu eski ve nadir karakterlerle kalabaliklastirmak yerine bu karakterleri ozel kullanim kayitlarina dahil etmek daha iyidir 1989 yilinin baslarinda Unicode calisma grubu Metaphor dan Ken Whistler ve Mike Kernaghan Research Libraries Group tan Karen Smith Yoshimura ve Joan Aliprand ve Sun Microsystems tan Glenn Wright da bulunacak sekilde genisletildi 1990 yilinda Microsoft tan Michel Suignard ve Asmus Freytag ve NeXT ten Rick McGowan da gruba katildi 1990 in sonlarina dogru mevcut kodlama standartlarindaki karakterlerin eslenmesi calismalari tamamlanmis ve Unicode un gozden gecirilecek son taslagi hazirlanmisti Unicode Consortium 3 Ocak 1991 de California da kuruldu Ekim 1991 de Unicode standardinin ilk cildi yayimlandi Han ideograflarini iceren ikinci cildi de Haziran 1992 de yayimlandi 1996 da Unicode 2 0 da yedek karakter mekanizmasi uygulanmaya basladi Bu sayede Unicode artik 16 bit ile sinirlanmamis oldu Yedek karakter ciftlerinin kullanilmasiyla Unicode kod alani bir milyon kod noktasini bulundurarak kadar genisledi Boylece Unicode Misir hiyeroglifleri veya Gokturk alfabesi gibi bircok tarihi yazi sistemlerini ve kodlamasina ihtiyac duyulmayacagi tahmin edilen artik kullanilmayan eskimis karakterleri destekler hale geldi Unicode tarafindan desteklenmesi ilk basta planlanmamis olan karakterler arasinda nadiren kullanilan Kanji karakterleri ve Cince karakterler de bulunmaktadir Bu karakterler artik kullanilmayan kisi veya yer isimlerinin parcasi olduklarindan nadiren kullaniliyordu ancak orijinal Unicode mimarisinde dusunulenden cok daha onemli karakterlerdir Mimari ve terminolojiUnicode 016 ile 10FFFF16 arasindaki sayilara karsilik gelen 1 114 112 adet kod noktasindan olusan bir kod alani tanimlamistir Kod noktasi Unicode tarafindan her bir karaktere atanan sayidir ve bu sayi genelde on alti tabaninda hekzadesimal gosterim adi verilen 10 15 arasi rakamlarin A F arasi harflerle temsil edildigi bir gosterim yontemiyle yazilir Normalde Unicode kod noktalari U ve sonrasinda kod noktasinin on alti tabanindaki karsiligi ile ifade edilir Kod noktalarinin besinci ve altinci haneleri birlikte duzlem plane numarasini ifade etmektedir toplamda on yedi adet duzlem bulunmaktadir 016 dan 1016 a kadar Ilk duzlem olan Basic Multilingual Plane kisaca BMP sifirinci duzlem oldugundan bu duzlemdeki karakterlerin kod noktalari yazilirken besinci hanedeki 0 yazilmadan dort haneli sekilde yazilirlar mesela Unicode tanimi latin capital letter x olan X harfinin kod noktasi U 000058 yerine kisaca U 0058 olarak ifade edilir BMP disindaki duzlemlerde bulunan kod noktalari basinda duzlem numarasi yazilarak ifade edilir Dolayisiyla toplamda bes veya alti haneli olarak yazilirlar ornegin language tag adli karakterinin kod noktasi U E0001 Emoji karakterlerinden grinning face adli karakterinin kod noktasi U 1F600 olarak ifade edilmektedir Unicode standardinin eski surumlerinde de benzer yazim sekilleri kullaniliyordu ancak ufak farkliliklar bulunmaktaydi Ornegin Unicode 3 0 standardinda kod noktalari yazilirken sekiz haneli kod noktasinin onune U getirilirdi Kod birimleri yazilirken onune U konularak yazilirdi Kod noktasi duzlemleri ve bloklari Unicode kod alani 0 dan 16 ya kadar numaralanmis on yedi adet duzleme plane ayrilmistir BMP duzleminde bulunan tum kod noktalari kodlamasinda tek kod birimiyle ve UTF 8 kodlamasinda da degisken uzunlukta kod birimleriyle bir iki veya uc kodlanabilir UTF 16 kodlamasinda kod birimleri 16 bit iki bayta karsilik gelir UTF 8 de 8 bit bir bayta karsilik gelir uzunlugundadir 1 den 16 ya kadar olan duzlemlerdeki kod noktalari tamamlayici duzlemler supplementary plane UTF 8 kodlamasinda dort kod birimi ile ve UTF 16 da yedek ciftler veya yer tutucu ciftler surrogate pairs denilen bir sistem ile iki kod birimi halinde kodlanirlar Her duzlem blok adi verilen bolumlere ayrilmistir ve her blokta o blokla ilgili karakterler bulunur Bloklarin kapsadigi kod noktalarinin sayisi yani bloklarin buyuklugu degisken olmakla birlikte bu sayi her zaman 16 nin ve genelde de 128 in katidir Ayni yazi turunde bulunan karakterler farkli bloklara dagilmis olabilir Karakterin Genel Kategorisi Her kod noktasinin adli bir niteligi bulunmaktadir Temel kategoriler sunlardir Harf Letter Im Mark Sayi Number Noktalama Punctuation Sembol Symbol Ayirici Seperator ve Diger Other Bu kategorilerin alt bolumleri de bulunmaktadir Genel Kategori niteligi her zaman kullanisli degildir cunku eski kodlama sistemleri tek kod noktasina birden fazla ozellik yuklemistir Ornegin U 000A lt control 000A gt LINE FEED SATIR ATLATMA karakteri ASCII sisteminde hem kontrol hem de duzen ayiricisi karakteri olarak kullanilmistir Unicode da bu karakterin Genel Kategori niteligi Diger Kontrol olarak tanimlanmistir Bir kod noktasinin ozelliklerinin ve davranisinin tam olarak belirlenebilmesi icin diger niteliklerin de dikkate alinmasi gerekmektedir Mevcut Genel Kategoriler sunlardir Genel Kategori Unicode gtdDeger Buyuk kucuk kategoriler Temel tur Atanmis karakter Sabit Yorumlar000 Harf Letter 001 Lu Harf buyuk harf Cizgesel Graphic Var002 Ll Harf kucuk harf Cizgesel Var003 Lt Harf ilk harf buyuk Cizgesel Var Buyuk ve kucuk harflerden olusan bagli harfler Dž Lj Nj ve Dz gibi 004 Lm Harf niteleyici Cizgesel Var005 Lo Harf diger Cizgesel Var010 Im Mark 011 Mn Im bosluksuz Cizgesel Var012 Mc Im bosluklu birlesen Cizgesel Var013 Me Im cevreleyen Cizgesel Var020 Sayi Number 021 Nd Sayi onluk rakam Cizgesel Var Sadece bu kategorideki karakterler De niteligine sahiptir022 Nl Sayi harf Cizgesel Var Harflerden veya harf benzeri karakterlerden olusan sayilar mesela Roma rakamlari 023 No Sayi diger Cizgesel Var Basit kesirler ust simge veya alt simge seklinde yazilan rakamlar030 Noktalama Punctuation 031 Pc Noktalama baglayici Cizgesel Var alt cizgi karakterini icerir032 Pd Noktalama tire Cizgesel Var Bircok tire imi karakterlerini icerir033 Ps Noktalama acan Cizgesel Var Acan ayrac karakterleri034 Pe Noktalama kapatan Cizgesel Var Kapatan ayrac karakterleri035 Pi Noktalama acan tirnak Cizgesel Var Acan tirnak isareti ASCII notr tirnak isaretini icermez Kullanima bagli olarak Ps veya Pe olarak davranir036 Pf Noktalama kapatan tirnak Cizgesel Var Kapatan tirnak isareti Kullanima bagli olarak Ps veya Pe olarak davranir037 Po Noktalama diger Cizgesel Var040 Sembol Symbol 041 Sm Sembol matematik Cizgesel Var042 Sc Sembol para birimi Cizgesel Var043 Sk Sembol niteleyici Cizgesel Var044 So Sembol diger Cizgesel Var050 Ayirici Seperator 051 Zs Ayirici bosluk Cizgesel Var Bosluk karakterini SEKME TAB satir basi ve satir atlatma gibi Cc karakterlerini icerir052 Zl Ayirici satir Bicimlendirme Var Sadece U 2028 LINE SEPARATOR SATIR AYIRICISI no 053 Zp Ayirici paragraf Bicimlendirme Var SadeceU 2029 PARAGRAPH SEPARATOR PARAGRAF AYIRICISI no 060 Diger Other 061 Cc Diger kontrol Kontrol Var Sabit 65 Adsiz lt control gt 062 Cf Diger bicimlendirme Bicimlendirme Var Satir sonu cizgisini cift yonlu metinleri desteklemek icin gereken kontrol karakterlerini ve dil etiketi karakterlerini icerir063 Cs Diger yedek Yedek Yok soyut Sabit 2048 Adsiz lt surrogate gt 064 Co Diger ozel kullanim Ozel kullanim Yok soyut Sabit de 6 400 131 068 tane Adsiz lt private use gt 065 Cn Diger atanmamis Yok Yok Sabit 66 Adsiz lt noncharacter gt Ayrilmis Reserved Yok Sabit degil Adsiz lt reserved gt Unicode 6 0 Bolum 4 tablo 4 9 a b Unicode 6 0 Bolum 2 tablo 2 3 Types of code points a b Stability policy Nitelik Degeri Kararliligi ve tablo Kararlilik politikasi Bazi gc gruplari asla degismeyecektir gc Nd Numeric Type De onluk ile birebir uyusacaktir a b c d e Unicode 6 0 Bolum 4 tablo 4 12 Name Kod Noktasi Etiketi adsiz bir kod noktasini tanimlamak icin kullanilabilir lt control hhhh gt lt control 0088 gt gibi Ad bolumu belgeleme sayfalarinda kontrol kodunun adi yerine kendisini koymayi onlemek amaciyla bos birakilir Unicode lt noncharacter gt etiketi yerine lt not a character gt etiketini de kullanmaktadir U D800 U DBFF araliginda bulunan 1 024 kod noktasi ust yedek kod noktalari olarak ve U DC00 U DFFF araliginda 1 024 kod noktasi da alt yedek kod noktalari olarak bilinir Ust yedek kod noktasi veya ondeki kod noktasi ve sonrasinda gelen alt kod noktasinin veya arkadaki kod noktasi olusturdugu cifte yedek cifti denir bu yedek ciftleri kodlamasi tarafindan BMP nin disinda kalan kod noktalarini kodlamak icin kullanilir kodlamasi kod noktalarini iki bayttan olusan birimler halinde kodlamaktadir iki bayt ile kodlanabilecek en buyuk sayi FFFF16 6553510 oldugundan U FFFF nin sonrasindaki kod noktalarini ifade etmek icin U D800 den U DFFF ye kadar olan kod noktalari Unicode tarafindan yedek kod noktalari olarak kullanilmak uzere ayrilmistir Bu kod noktalari ciftler halinde kullanilarak BMP disinda kalan 1 048 560 karakteri UTF 16 ile kodlamaya fazlasiyla yetmektedir 1 024 1 024 1 048 576 adet yedek cifti kombinasyonu vardir Ust ve alt yedek kod noktalari tek baslarina anlamsiz ve gecersizdir Ciftler halinde kullanildiklari zaman bir karakteri temsil ederler Dolayisiyla yedek cifti olarak kullanilmak uzere ayrilmis olan U D800 U DFFF araligindaki kod noktalari U 10000 U 10FFFF araligindaki kod noktalarinin yerini tutmak amaciyla kullanildigindan karakter olarak kullanilabilecek kod noktalari yedek kod noktalari disinda kalan kod noktalaridir U 0000 U D7FF ve U E000 U 10FFFF araliginda kalan 1 112 064 kod noktasi Karakter olarak kullanilabilecek kod noktalarina ayni zamanda karakterin skaler degeri de denmektedir Ornegin UTF 16 da yedek ciftleri kullanilarak D803 DC00 16 olarak kodlanan U 10C00 𐰀 OLD TURKIC LETTER ORKHON A karakterinin skaler degeri U 10C00 dir denir Cunku D803 DC00 16 yedek cifti 10C0016 sayisini temsil eder Unicode bazi kod noktalarina ne simdi ne de gelecekte herhangi bir karakter atamayacagini duyurmustur Karakter disi kod noktalari Unicode sartnamesinde noncharacter olarak adlandirilmaktadir Karakter disi kod noktalari yazilimlarin ic yapisinda herhangi bir amacla kullanilabilir Toplamda 66 adet karakter disi kod noktasi bulunmaktadir U FDD0 U FDEF araligindaki kod noktalari ve her duzlemin son iki kod noktasi yani U FFFE U FFFF U 1FFFE U 1FFFF U 10FFFE U 10FFFF Karakter disi kod noktalari sabittir ileride yeni karakter disi kod noktasi tanimlanmayacaktir Ayirtilmis reserved kod noktalari da ileride kodlama karakteri olarak kullanilacak olan ama henuz Unicode tarafindan kendilerine karakter atanmamis kod noktalaridir Ozel kullanim kod noktalari da karakter olarak kullanilabilecegi belirtilen ancak hangi karakteri temsilen kullanilacaklari Unicode tarafindan belirtilmeyip kullaniciya birakilmis olan karakterlerdir Yani bu karakterler yazili bilgi alisverisi esnasinda taraflar arasinda onceden yapilmis bir anlasamaya gore yorumlanabilecek karakterlerdir Unicode kod alaninda uc adet ozel kullanim bolgesi vardir Ozel Kullanim Alani U E000 U F8FF 6 400 karakter Tamamlayici Ozel Kullanim Alani A U F0000 U FFFFD 65 534 karakter Tamamlayici Ozel Kullanim Alani B U 100000 U 10FFFD 65 534 karakter Cizgesel karakterler graphic characters Unicode tarafindan tanimlanan belirli bir anlamsal degeri olan ve gorunur bir glif sekline sahip veya gorunur bir boslugu temsil eden karakterlerdir Unicode 7 0 itibariyla 112 804 cizgesel karakter vardir Bicimlendirme karakterleri ise gorunur bir sekilleri olmayan ancak komsu karakterlerin gorunusunu veya davranisini etkileyen karakterlerdir Ornegin U 200C ZERO WIDTH NON JOINER karakteri ve U 200D ZERO WIDTH JOINER karakteri bitisebilen karakterlerin bitisme durumunu belirlemek icin kullanilabilir Unicode 7 0 da 152 bicimlendirme karakteri bulunmaktadir Baska bir ornek vermek gerekirse metin dosyalarinda bilgisayarlarda Enter tusuna basarak yapilan alt satira gecme islemi sirasinda metne U 000A lt control 000A gt no ve U 000D lt control 000D gt no karakterleri islenir bu karakterler metin uzerinde gorunur bir yer kaplamadigi halde kendilerinden sonra gelen karakterlerin alt satirda goruntulenmesini sagladiklari icin kontrol islevi gorur ve cizgesel karakter sinifina girmez Altmis alti kod noktasi U 0000 U 001F ve U 007F U 009F araliklari kontrol kodlari olarak ayrilmistir ve ISO IEC 6429 standardiyla belirlenen C0 ve C1 kontrol kodlarina karsilik gelir Unicode la uyumlu kodlamalarda bu kontrol karakterlerinden U 0009 lt control 0009 gt no U 000A lt control 000A gt no ve U 000D lt control 000D gt no karakterleri siklikla kullanilir Cizgesel karakterler bicimlendirme karakterleri ve kontrol kodu karakterleri hep beraber atanmis karakterler olarak bilinir Soyut karakterler Soyut karakter metinsel bir verinin duzenlenmesi denetlenmesi veya temsil edilmesi icin kullanilan bilgi birimi olarak tanimlanmistir Soyut karakterin bir kod noktasiyla eslestirilmis haline kodlu karakter denir ve kodlu karakterler genelde kisaca karakter olarak anilir Soyut karakterler karakterlerin temsil ettikleri bilginin soyut yani sekil almamis halini temsil eder Unicode standardinda tek bir kod noktasiyla ifade edilebilen bir soyut karakter ayni zamanda birden fazla kod noktasinin yan yana kullanilmasiyla da alternatif olarak temsil edilebilir Ornegin a harfi Unicode tanimi U 00E2 a LATIN SMALL LETTER A WITH CIRCUMFLEX kod noktasiyla ifade edilebilecegi gibi U 0061 a LATIN SMALL LETTER A ve U 0302 COMBINING CIRCUMFLEX ACCENT kod noktalarinin yan yana kullanilmasiyla da ifade edilebilir Iki farkli sekilde de ayni goruntu ortaya cikacaktir U 00E2 a ve U 0061 U 0302 a Bu karakterler kodlamalari itibariyla farkli olmalarina ragmen ayni soyut karakteri temsil etmektedir Birisi tek bir kod noktasindan olusurken digeri harfin parcalarina karsilik gelen kod noktalarinin birlestirilmesiyle ifade edilir Ancak bazi soyut karakterlerin Unicode standardinda tek kod noktasiyla karsiligi yoktur Bu yuzden bu soyut karakterler birden fazla kod noktasinin art arda kullanilmasiyla ifade edilebilirler Unicode yalnizca iki kod noktasinin kombinasyonuyla ifade edilebilen soyut karakterlerin bir listesini sitesinde barindirmaktadir Ayrica diger standartlarla uyumluluk saglamak icin bazen ayni soyut karakter birden cok tekil kodlanmis karaktere karsilik gelebilir Bu durum ayni karakterin birden fazla kod noktasinin birlesimi seklinde gosterilmesinden farklidir Mesela A karakteri Unicode standardinda U 00C5 A LATIN CAPITAL LETTER A WITH RING ABOVE kod noktasiyla temsil edilmektedir Ancak ayni soyut karakteri temsil eden U 212B Å ANGSTROM SIGN adli bir kod noktasi da bulunmaktadir Tum cizgesel karakterler bicimlendirme karakterleri ve ozel kullanim karakterlerinin essiz ve degismez bir tanimlayici adi vardir Isimlerin degismezligi Unicode surum 2 0 dan itibaren Isim Kararliligi Politikasi ile garanti altina alinmistir Tanimlayici adin ciddi derecede sorunlu ve yaniltici oldugu veya onemli yazim hatalari icerdigi durumlarda resmi bir ikincil ad tanimlanabilir ve uygulamalarin resmi karakter adi yerine resmi ikincil adi kullanmalari tavsiye edilir Ornegin Yi yazisina ait karakterlerden yanlis adlandirilan U A015 ꀕ YI SYLLABLE WU karakterine daha sonra yi syllable iteration mark yi hece yineleme isareti seklinde ikincil bir ad tanimlanmistir U FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET no karakteri daha sonra ikincil ad olarak presentation form for vertical right white lenticular bracket adini almistir Karakter kodlamalari Eskiden karakter kodlamasi kavrami hem her karaktere birer sayi atama hem de bu sayilari dogrudan iki tabanina donusturup bilgisayarda kullanilabilir hale getirme islemine verilen isimdi Bu yuzden Unicode dan once kullanilan ASCII ve tum genisletilmis ASCII sistemleri birer karakter kodlamasidir Unicode dan sonra ise karakter kodlamasi kavrami degismistir Unicode karakterlere sayi atanmasiyla bu sayilarin iki tabanina donusturulmesi islemini birbirinden ayirmistir Cunku Unicode ile beraber karakterlere atanan sayilari kod noktalarini dogrudan iki tabanina donusturmektense farkli yontemler kullanarak donusturme ihtiyaci ortaya cikmistir Dolayisiyla Unicode dan sonra karakter kodlamasi kavrami kod noktalarini iki tabaninda temsil etme yontemini karsilar olmustur Tanimda meydana gelen bu degisikligin nedeni Unicode un genisletilmis ASCII kumelerinin karakterlere atamak icin kullandigi 0 255 olan sayi araligini 0 1 114 111 e cikarmasinda yatmaktadir Unicode dan onceki sistemlerde karakterlere atanan sayilar 255 i asmadigi icin bu sayilar dogrudan iki tabanina cevrilip karakterleri temsil etmek icin kullanilabiliyordu Ornegin ASCII sistemlerinde a harfi 9710 sayisiyla eslestirilmisti ve herhangi bir metin belgesinde a harfi kodlanacagi zaman 9710 iki tabanina donusturulup 11000012 seklinde 8 bitlik bir bayt olarak depolaniyordu Sayilar 255 i asmadigi icin her karakter 1 bayta sigmaktaydi Ancak Unicode sisteminde 255 ten buyuk sayilar iki tabaninda 8 biti asmaktadir ve eger 1 114 111 sayinin hepsi esit uzunlukta olacak sekilde dogrudan iki tabanina donusturulup kullanilmak istenirse her karakterin 32 bit uzunlugunda olmasi iki tabanina donusturuldugunde 32 bitten kisa olan sayilarin da basina sifir eklenerek 32 bite tamamlanmasi gerekir Cunku her karakterin uzunlugu sabit olmazsa kodlamada bir karakterin nerede bitip digerinin nerede basladigi anlasilamaz Bu durum genisletilmis ASCII ye gore kodlanmis bir metne gore Unicode ile kodlanmis bir metnin dort kat kadar fazla yer kaplamasina neden olacaktir Her karakterin esit uzunlukta bitlerle temsil edilmesi zorunlulugundan kurtulmak istenirse karakterlerin kod noktalarini iki tabanina donustururken araya karakterin baslangicini veya sonunu belli edecek isaretler eklenerek kodlama yapilmasi gerekecektir Bu islem icin gelistirilen birkac farkli kodlama sistemi bulunmaktadir Bunlara ornek olarak UTF 8 ve gosterilebilir Bunlarin her biri karakterlerin kod noktalarini yani Unicode tarafindan kendilerine atanan sayilari bilgisayar ortaminda saklamak ve uzerinde islem yapmak amaciyla iki tabanina donustururken farkli yontemler kullanirlar Her birinin farkli avantajlari ve dezavantajlari mevcuttur Gunumuzde en yaygin kullanilan kodlama UTF 8 kodlamasidir Dis baglantilarUnicode Consortium5 Subat 2005 tarihinde Wayback Machine sitesinde Standardlar RFC 3629 RFC 3492 Unicode karakterleri topluca bulabileceginiz bir site 5 Aralik 2008 tarihinde Wayback Machine sitesinde Emojiler ve Unicode lari 28 Mayis 2019 tarihinde Wayback Machine sitesinde Ayrica bakinizUTF 8Kaynakca The Unicode Standard A Technical Introduction Unicode Standardi Teknik Tanitim Ingilizce 31 Aralik 2015 tarihinde kaynagindan Erisim tarihi 16 Mart 2010 Unicode 8 0 0 Summary Ingilizce 28 Haziran 2016 tarihinde kaynagindan Erisim tarihi 6 Temmuz 2015 Ozet Hikaye Ingilizce Ingilizce 21 Nisan 2016 tarihinde kaynagindan Erisim tarihi 15 Mart 2010 a b c Joseph D Becker 29 Agustos 1988 Unicode 88 PDF Ingilizce 28 Mayis 2016 tarihinde kaynagindan PDF Erisim tarihi 20 Temmuz 2014 Stephen J Searle 8 Nisan 2016 tarihinde kaynagindan arsivlendi Erisim tarihi 18 Ocak 2013 Ingilizce 26 Aralik 2015 tarihinde kaynagindan arsivlendi Erisim tarihi 16 Mart 2010 Unicode Standardi Surum 6 0 s 62 Karakter Kodlama Bicimleri PDF Ingilizce 8 Agustos 2012 tarihinde kaynagindan PDF Erisim tarihi 4 Haziran 2012 a b Ingilizce 10 Nisan 2016 tarihinde kaynagindan arsivlendi Erisim tarihi 16 Mart 2010 Nitelikler PDF Ingilizce 7 Nisan 2010 tarihinde kaynagindan PDF Erisim tarihi 16 Mart 2010 Ingilizce 15 Aralik 2015 tarihinde kaynagindan arsivlendi Erisim tarihi 16 Mart 2010 Ingilizce 27 Kasim 2015 tarihinde kaynagindan arsivlendi Erisim tarihi 16 Mart 2010 Ingilizce 28 Mayis 2016 tarihinde kaynagindan arsivlendi Erisim tarihi 16 Mart 2010