Unicode

Vikipedi, özgür ansiklopedi
Atla: kullan, ara
Unicode logosu.

Unicode (Evrensel Kod) Unicode Consortium organizasyonu tarafından geliştirilen ve her karaktere bir sayı değeri karşılığı atayan bir standarttı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 Seti (UCS) olarak bilinen ISO/IEC 10646 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 100 farklı alfabe türünden 110.000'den fazla karakteri kapsamaktadır.

Standardın içinde karakterler ve karakterlere atanmış sayı değerlerinin tablolaştırılmış hali, bu sayılarının kodlanması ile ilgili kurum tarafından önerilen standart kodlama sistemleri ve 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.[1] Haziran 2014 tarihi itibarıyla standardın en son sürümü Unicode 7.0'dı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 yaygın olanı UTF-8 ve UTF-16'dır.


Unicode öncesi[değiştir | kaynağı değiştir]

Ana madde: ASCII

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 İngilizcesinin harflerinin 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ı 128'den 256'ya çıkarılmıştır. İlk çıkarılan genişletilmiş ASCII seti olan ISO 8859-1 (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 setleri çıkarılmıştır. Bu farklı setlere kod sayfası da denmektedir.

Görüldüğü gibi bu sistemde, birbirinden farklı ASCII setlerinde bulunan dillerin karakterlerinin aynı metinde bulunması mümkün değildir. Çünkü 128 ve sonrasındaki sayılar her genişletilmiş ASCII setinde 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 hala mecburen desteklemektedir.

Ortaya çıkışı[değiştir | kaynağı değiştir]

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 seti oluşturmanın sağlayacağı faydalar üzerinde çalışma yapmaktaydı.[2]Ağustos 1988 tarihinde, Joe Becker "şimdilik Unicode olarak adlandırılan uluslararsı/ç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.[3]

Unicode 88 başlıklı belgede Becker 16-bitlik bir karakter modeli taslağı hazırlamıştır:[3]

Unicode dünya metinlerinin güvenilir ve üzerinde çalışılabilir bir kodlama 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 16 bite uzatılmış bir "geniş gövdeli 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:[3]

Unicode eskiden beri gelenleri korumaktansa geleceğe yönelik işe yararlığı 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 tüm gazetelerin ve dergilerin toplamında kullanılan karakterleri) 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 kullanldığı 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.

In early 1989, the Unicode working group expanded to include Ken Whistler and Mike Kernaghan of Metaphor, Karen Smith-Yoshimura and Joan Aliprand of RLG, and Glenn Wright of Sun Microsystems, and in 1990 Michel Suignard and Asmus Freytag from Microsoft and Rick McGowan of NeXT joined the group. By the end of 1990, most of the work on mapping existing character encoding standards had been completed, and a final review draft of Unicode was ready.

The Unicode Consortium was incorporated on January 3, 1991, in California, and in October 1991, the first volume of the Unicode standard was published. The second volume, covering Han ideographs, was published in June 1992.

In 1996, a surrogate character mechanism was implemented in Unicode 2.0, so that Unicode was no longer restricted to 16 bits. This increased the Unicode codespace to over a million code points, which allowed for the encoding of many historic scripts (e.g. Egyptian Hieroglyphs) and thousands of rarely used or obsolete characters that had not been anticipated as needing encoding. Among the characters not originally intended for Unicode are rarely used Kanji or Chinese characters, many of which are part of personal and place names, making them rarely used, but much more essential than envisioned in the original architecture of Unicode.[4]

Mimari ve terminoloji[değiştir | kaynağı değiştir]

Kod noktası düzlemleri ve blokları[değiştir | kaynağı değiştir]

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ı UTF-16 kodlamasında tek kod birimiyle ve UTF-8 kodlamasında da bir iki ve üç bayt ile kodlanabilir. 1'den 16'ya kadar olan düzlemlerdeki kod noktaları (tamamlayıcı düzlemler, supplementary plane) UTF-8 kodlamasında dört bayt ile ve UTF-16'da yedek çiftler veya yer tutucu çiftler (surrogate pairs) denilen bir sistem ile 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. Verilen bir yazı türünde bulunan karakterler farklı bloklara dağılmış olabilir.

Karakterin Genel Kategorisi[değiştir | kaynağı değiştir]

Her kod noktasının Genel Kategori 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şlerdir. Örneğin U+000A <control-000A> 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 Karakter Niteliği)[a 1]
Değer Büyük, küçük kategoriler Temel tür[a 2] Atanmış karakter[a 2] Sabit[a 3] 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 Sayısal Tür = De niteliğine sahiptir[a 3]
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 (satır ayırıcısı) (L​SEP)
Zp Ayırıcı, paragraf Biçimlendirme Var SadeceU+2029 paragraph separator (paragraf ayırıcısı) (P​SEP)
Diğer (Other)
Cc Diğer, kontrol Kontrol Var Sabit 65 Adsız[a 4], <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[a 4], <surrogate>
Co Diğer, özel kullanım Özel kullanım Yok (soyut) Sabit BMP'de 6.400, 15–16. Düzlemlerde 131.068 tane Adsız[a 4], <private-use>
Cn Diğer, atanmamış Yok Yok Sabit 66 Adsız[a 4], <noncharacter>
Ayrılmış (Reserved) Yok Sabit değil Adsız[a 4], <reserved>
  1. ^ Unicode 6.0, Bölüm 4, tablo 4-9
  2. ^ a b Unicode 6.0, Bölüm 2, tablo 2-3: Types of code points
  3. ^ a b Stability policy: Nitelik Değeri Kararlılığı ve tablo. Kararlılık politikası: Bazı gc grupları asla değişmeyecektir. gc=Nd, Numeric Type=De (onluk) ile birebir uyuşacaktır.
  4. ^ a b c d e Unicode 6.0, Bölüm 4, tablo 4-12 Name=""; Kod Noktası Etiketi adsız bir kod noktasını tanımlamak için kullanılabilir. <control-hhhh>, <control-0088> gibi. Ad bölümü belgeleme sayfalarında kontrol kodunun adı yerine kendisini koymayı önlemek amacıyla boş bırakılır. Unicode <noncharacter> etiketi yerine <not a character> etiketini de kullanmaktadır.

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 öncü kod noktası) ve sonrasında gelen alt kod noktasının (veya izleyen kod noktası) oluşturduğu çifte yedek çifti denir bu yedek çiftleri UTF-16 kodlaması tarafından BMP'nin dışında kalan kod noktalarını kodlamak için kullanılır. UTF-16 kodlaması kod noktalarını iki bayt uzunluğunda 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 (göktürk alfabesinden a harfi) 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.[11]

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[12]. 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 (genişliksiz bağlantı koparıcı) karakteri ve U+200D zero width joiner (genişliksiz bağlayıcı) 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> (satır atlatma) ve U+000D <control-000D> (satır başına getirme) karakterleri işlenir.

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> (sekme), U+000A <control-000A> (satır atlatma) ve U+000D <control-000D> (satır başına getirme) karakterleri sıklıkla kullanılır.

Çizgesel karakterler, biçimlendirme karakterleri ve kontrol kodu karakterleri hep beraber atanmış karakterler olarak bilinir.

Soyut karakterler[değiştir | kaynağı değiştir]

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 kodlanmış karakter denir ve kodlanmış 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.[13] Örneğin â harfi, Unicode tanımı U+00E2 â latin small letter a with circumflex (şapkalı küçük latin a harfi) kod noktasıyla ifade edilebileceği gibi U+0061 a latin small letter a (küçük latin a harfi) ve U+0302 ̂ combining circumflex accent (birleşen şapka işareti) 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 etmektedirler. 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.[14]

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 (üzerinde halka olan büyük latin a harfi) kod noktasıyla temsil edilmektedir. Ancak aynı soyut karakteri temsil eden U+212B angstrom sign (angstrom işareti) 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 [11]. 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 (yi wu hecesi) 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 (yanlış yazılmış) karakteri daha sonra ikincil ad olarak presentation form for vertical right white lenticular bracket adını almıştır.[15]

Karakter kodlamaları[değiştir | kaynağı değiştir]

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 setlerinin 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 1.114.111 sayı eğer doğrudan iki tabanına dönüştürülüp kullanılırsa her karakter için 32 bit gerekir ki bu genişletilmiş ASCII'ye göre kodlanmış bir metnin dört katı kadar fazla yer kaplamaktadır. Bu yüzden ASCII ve genişletilmiş ASCII, karakterlere atadığı sayıları doğrudan iki tabanına dönüştürüp kullanırken Unicode'un karakterlere atadığı sayılar iki tabanına dönüştürülürken bir kodlama sürecinden geçirilir. Bu işlem için geliştirilen bir kaç farklı kodlama sistemi bulunmaktadır. Bunlara örnek olarak UTF-8, UTF-16 ve UTF-32 gösterilebilir.

Dış bağlantılar[değiştir | kaynağı değiştir]

Standardlar

Ayrıca bakınız[değiştir | kaynağı değiştir]

Kaynaklar[değiştir | kaynağı değiştir]

  1. ^ "The Unicode Standard: A Technical Introduction (Unicode Standardı: Teknik Tanıtım)" (İngilizce). http://www.unicode.org/standard/principles.html. Erişim tarihi: 2010-03-16. 
  2. ^ "Özet Hikaye (İngilizce)" (İngilizce). http://www.unicode.org/history/summary.html. Erişim tarihi: 2010-03-15. 
  3. ^ a b c Becker (August 29, 1988). "Unicode 88" (İngilizce). http://www.unicode.org/history/unicode88.pdf. 
  4. ^ Searle, Stephen J. "Unicode Revisited". http://tronweb.super-nova.co.jp/unicoderevisited.html. Erişim tarihi: 2013-01-18. 
  5. ^ "Unicode terimleri sözlüğü" (İngilizce). http://unicode.org/glossary/. Erişim tarihi: 2010-03-16. 
  6. ^ "Unicode Standardı, Sürüm 6.0, s. 62, Karakter Kodlama Biçimleri" (İngilizce). http://www.unicode.org/versions/Unicode6.0.0/ch03.pdf#G7404. Erişim tarihi: 2012-06-04. 
  7. ^ a b "Unicode Karakter Kodlaması Kararlılık Politikası" (İngilizce). http://unicode.org/policies/stability_policy.html. Erişim tarihi: 2010-03-16. 
  8. ^ "Nitelikler" (İngilizce). http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf#G43463. 
  9. ^ "Unicode Karakter Kodlama Modeli" (İngilizce). http://unicode.org/reports/tr17/. Erişim tarihi: 2010-03-16. 
  10. ^ "Unicode Adlandırılmış Dizilimler" (İngilizce). http://unicode.org/Public/UNIDATA/NamedSequences.txt. Erişim tarihi: 2010-03-16. 
  11. ^ "Unicodeİkincil Adlar" (İngilizce). http://unicode.org/Public/UNIDATA/NameAliases.txt. Erişim tarihi: 2010-03-16.