Bilişimde karakter kodlaması kavramı bir çeşit kodlama sistemi kullanılarak kodlanmış karakter gruplarını temsil etmektedir. Soyutlama düzeyi ve kullanıldığı bağlama bağlı olarak karakterlere karşılık gelen kod noktaları ve bunların oluşturdukları kod alanı, , , doğal sayılar, elektrik sinyalleri vb. şeklinde algılanabilir. Metinsel verilerin işlenmesi, depolanması ve iletimi esnasında karakter kodlamaları kullanılır. Karakter seti, karakter eşlem veya kod sayfası gibi ifadeler karakter kodlaması kavramıyla eş anlamlıymış gibi kullanılsa da aralarında bazı anlam farkları bulunmaktadır.
Optik ve elektronik telgrafla ilişkili eski karakter kodları yazılı dilde kullanılan karakterlerin, büyük harfler, rakamlar ve bazı noktalama işaretleri gibi yalnızca belli bir kısmını temsil edebiliyordu. Çağdaş bilgisayar sistemlerinde verilerin sayısal olarak temsil edilmesinin oldukça düşük maliyetli olması sayesinde karakter temsili çok daha ayrıntılı olabilmektedir (Unicode'da olduğu gibi). Günümüzde, dünyadaki birçok yazı dilinde kullanılan eskisinden çok daha fazla karakter, karakter kodlamaları aracılığıyla dijital ortamda temsil edilebilmektedir. Karakterler kodlanırken önceden belirlenmiş uluslararası standartlara uyulması metinlerin tüm dünyada elektronik olarak takas edilmesine olanak tanımaktadır.
Unicode kodlama modeli
Unicode ve paralel standardı ISO/IEC 10646 modern, birleştirilmiş bir karakter kodlama sisteminin oluşmasını sağlamıştır. Karakterleri doğrudan sekizli bit değerleri olarak (baytlar halinde) kodlamak yerine, bu süreci ayrı aşamalara bölmüştür. Bu standartla hangi karakterlerin kodlama standardına dahil edileceğinin belirlenmesi (karakter dağarcığının belirlenmesi), bu karakterlerin her birine birer numara verilmesi (kodlu karakter kümesinin oluşturulması), karakterlere verilen numaralar için kodlama biçimlerinin belirlenmesi ve en sonunda da karakterlerin belirlenen yöntemlerden birine göre birler ve sıfırlar halinde kodlanması işlemleri birbirinden ayrılmıştır. Birinci aşama diğer tüm aşamaların ortak zeminini oluşturmaktadır . Böylece farklı kodlama türlerinin temel alacağı ortak bir karakter kümesi oluşturulmak istenmiştir.ASCII ve genişletilmiş ASCII sistemlerinde bu aşamaların hepsi tek parça halindeydi. Dolayısıyla kodlama sistemleri arasında uyumsuzluk söz konusuydu. Her bir genişletilmiş ASCII setinde farklı bir karakter kümesi bulunuyordu. Unicode kodlama sistemlerinin ise tamamı aynı ortak karakter dağarcığını esas alır.
Bu modelin nasıl işlediğini anlatabilmek için "karakter kümesi" ve "karakter kodlaması" gibi belirsiz terimler yeterli olmamaktadır. Bu modeli açıklarken kullanılan terimler şunlardır:
Karakter dağarcığı
Karakter dağarcığı bir sistemin desteklediği soyut karakterlerin tamamından oluşan gruba verilen addır. Bu dağarcık kapalı ya da açık olabilir. Kapalı olması durumunda dağarcığa yeni bir karakter eklenebilmesi için yeni bir standart oluşturulmalıdır (örneğin ASCII standardına yeni karakterler eklenebilmesi için adıyla yeni bir standart oluşturulması gerekti; çünkü ASCII kapalı bir karakter dağarcığından oluşuyordu). Açık olması durumunda eklemelerin yapılması mümkün olmaktadır (örneğin Unicode sistemi tamamen ve Unicode öncesinde Windows işletim sisteminde kullanılan kodlama standardı olan Windows kod sayfaları kısmen açıktır). Karakter dağarcıkları, yazı sistemlerinin en temel bileşenlerine nasıl ayrılabileceği üzerinde düşünülerek oluşturulur. Latin alfabesi ve türevleri, Yunan alfabesi ve Kiril alfabesi, değişik sıralamalarla art arda dizildiklerinde okunabilen metinler oluşturabilecek temel harflere, noktalama işaretlerine, sayılara ve boşluk karakteri gibi bazı özel karakterlere ayrılabilir. Birimlerine ayrılması kolay gibi görünen bu alfabelerde bile aksan işaretleri gibi bazı önemli sorunlar ortaya çıkmaktadır: aksanlı karakterler başlı başına ayrı birer karakter olarak da düşünülebilirler, aksansız harf ve aksan işaretinin bir araya gelerek oluşturduğu karakter grubu olarak da düşünülebilirler. Birinci durum metinlerin işlenmesini kolaylaştıracaktır ancak ikinci durum tüm aksan ve harf kombinasyonlarını olanaklı kılmak için kullanışlı bir yol sağlayacaktır. Ayrıca bazı Batı dillerinde yan yana gelen bazı harflerin görsel zenginlik sağlamak amacıyla birleştirilmesi olan tipografik bağların (ligatür) yazımı da benzer şekilde sorun oluşturmaktadır. Arapça ve İbranice gibi başka yazı sistemlerinin sağdan sola yazılıyor olması ve ayrıca Arapçada aynı harfin tek başınayken, kelimenin başındayken, ortasındayken ve en sondayken farklı şekillerde yazılıyor olması çift yönlü metinlerin desteklenmesi ve gliflerin farklı koşullarda farklı şekillerde yazılmasının olanaklı hale getirilmesi açısından sorun oluşturmaktadır.
Kodlu karakter kümesi
Kodlu karakter kümesi (İngilizce kısaltmasıyla CCS) karakter dağarcıklarının kod noktası adı verilen (genellikle negatif olmayan) tam sayılar kullanılarak nasıl temsil edileceğini belirtir. Örneğin Latin harflerini de içeren karakter dağarcığında "A" harfi 65 sayısıyla sıradaki diğer harfler de 66, 67 şeklinde devam eden sayılarla eşleştirilebilir. Dolayısıyla böyle bir sistemde "A" harfinin kod noktası 65'tir denir. Karakterlere atanan bu sayılar, yazı birimlerinin dijital ortamda temsil edilmesinin ilk aşaması olarak düşünülebilir. Daha sonraki aşamada kod noktalarının hangi yöntemle 1'lere ve 0'lara dönüştürüleceği ve bu esnada hangi uzunlukta kod birimlerinin kullanılacığına karar verilecektir. Karakter dağarcığındaki tüm karakterler ve onlara karşılık gelen sayıların birlikte oluşturduğu gruba kodlu karakter kümesi denir. Çeşitli kodlanmış karakter kümeleri aynı dağarcığı paylaşabilirler, örneğin ISO/IEC 8859-1 ve IBM 037 ve 500 numaraları kod sayfaları aynı dağarcığı paylaşmaktadır ama bu karakterleri farklı sayılarla eşleştirmişlerdir. kodlu karakter kümesinde, her kod noktası sadece bir karakteri temsil eder, yani kodlu karakter kümesi bir fonksiyondur.
Kod birimi
Karakter kodlaması | Kod birimi genişliği |
---|---|
Yedi bit | |
UTF-8 | Sekiz bit |
EBCDIC | Altı bit |
On altı bit | |
Otuz iki bit |
Kod birimi kodlama düzenlerinin karakterleri bit dizilerine dönüştürürken kullandığı en küçük birimin genişliğidir. Kodlanmış karakterler bir veya daha fazla sayıda kod biriminden oluşur.
Karakter kodlama biçimi
Karakter kodlama biçimi (İngilizce kısaltmasıyla CEF), kodlu karakter kümesinde bulunan kod noktalarının, sayıları belirli uzunluktaki bitlerle ikili biçimde temsil eden bir sistem üzerinde (yani tüm bilgisayar sistemlerinde) depolanabilecek bir şekilde iki tabanında ifade edilen kod değerlerine nasıl dönüştürüleceğini belirleyen kurallar bütünüdür.
Bilgisayar sistemleri, ikil verileri tek tek bitler halinde kullanmaz. Verinin işlenmesi ve alınıp verilmesini kolaylaştırabilmek için verileri belirli uzunluktaki kalıplar halinde ifade ederler. Bu yüzden, kod noktaları da bitlerle ifade edilirken, bir veya daha çok sabit uzunluklu kod birimiyle ifade edilmelidir. Bu kod birimlerinin uzunluğu belirlenirken, kullanılan bilgisayar sisteminin teknik özelliklerini göz önünde bulundurmak gereklidir. Bunlar bayt uzunluğu ve uzunluğudur. Bellekte adreslenebilen en küçük veri parçası bayt olarak adlandırılır. Baytlar genellikle 8-bit uzunluğundadır. Sözcük ise işlemci tarafından tek seferde işlenebilen en büyük veri uzunluğudur ve genelde iki bayttır (16-bit). 8-bitlik baytlar kullanan bir sistemde veriler 8 bit ve katları halinde okunur, yazılır ve aktarılır.
Örneğin karakter kodlamasında kod biriminin 16-bit uzunluğunda seçildiğini düşünelim. Böyle bir sistemde 0 ile 65.535 arasındaki sayılar (yani (Unicode Temel Çokdilli Düzleminde) bulunan kod noktası sayısı) tek bir 16-bitlik birim ile yazılabilirken daha büyük sayılar için birden fazla birim kullanılması gerekecektir. Tek bir kod birimi de tam olarak iki baytla (8-bitlik) ifade edilebilir. 32-bitlik birimler kullanıldığında ise tüm kod noktaları birer birimle ifade edilebilir. Ancak bu durumda verinin kapladığı yer çok artacak ve dolayısıyla taşınması zorlaşacaktır. İşte karakter kodlama biçimlerinin uygun bir şekilde yönetmesi gereken durum budur: sınırlı bir aralıkta bulunan (örneğin 0 ile 1.4 milyon arası) tek bir kod noktasını, her biri daha sınırlı bir aralıktaki sayıları temsil edebilen bir ya da daha fazla kod biriminden (örneğin her biri 0 ile 65.525 arası sayıları temsil edebilen 16-bitlik kod birimlerinden) oluşan kod değerlerine dönüştürmek için bir yöntem belirler. Bu yöntemi belirlerken, verinin işlenme kolaylığı ve kaplayacağı yeri göz önünde bulundurmaları gerekir.
En basit karakter kodlama biçimi, her bir kod noktasının tek bir kod birimiyle ifade edilebileceği şekilde büyük kod birimleri seçilerek yapılan bir kodlama olacaktır (bir kod noktasının bir kod biriminden oluşan bir kod değerine karşılık geldiği). Bu yöntem, 8 bitlik birimlere sığabilen kodlanmış karakter kümeleri için (örneğin eskiden kalan genişletilmiş ASCII kodlamalarının çoğu gibi) gayet iyi ve 16 bitlik birimlere sığabilenler için de (örneğin Unicode'un eski sürümleri, görece daha az sayıda karakter içerdiği için) az çok iyi işlemektedir. Ancak kodlu karakter kümesinin boyutu büyüdükçe bu yöntem giderek verimsizleşmektedir. Örneğin Unicode'un günümüzdeki sürümündeki her karakteri bu yöntemle kodlamak için 21 bit uzunluğunda kod birimleri kullanmak gerekecektir. Hatta çoğu sistem verileri 8-bit ve katları şeklinde temsil ettiğinden kod birimi en az 24-bit uzunluğunda olacaktır. Böyle bir sistem veri boyutu sorunun yanı sıra eski sistemlerde uygulanması da zor bir sistem olduğundan kullanışsızdır. Bu yüzden daha küçük kod birimleri kullanan çeşitli kodlama biçimleri tasarlanmıştır. Unicode'un ileriki sürümleriyle çalışan sistemler ya UTF-8 ya da kodlama biçimlerini kullanmaktadır. UTF-8, kod noktalarını bir veya daha fazla sayıda 8-bitlik kod birimleriyle ve da iki adet 16-bitlik kod birimiyle ifade eder.
Karakter kodlama biçimleri daha önce de belirtildiği gibi her karakteri tek bir kod birimiyle kodlarsa, bu şekilde kodlanmış bir karakter dizisinde art arda gelen karakterlerin nerede başlayıp nerede bittiği belirli olacaktır (her karakter sabit uzunluktaki bir bit dizisiyle ifade edildiğinden). Ancak, UTF-8 ve gibi karakterlerin bir veya fazla kod biriminden oluşabildiği kodlamalarla kodlanmış karakter dizileri yazılımlar tarafından işlenirken, bir karakterin nerede bitip diğerinin nerede başladığının anlaşılabilmesi önemli bir sorun olarak ortaya çıkmıştır. Farklı kodlama biçimleri farklı yöntemler kullanarak bu sorunun üstesinden gelmişlerdir. Örneğin kısaca söylemek gerekirse UTF-8 kodlaması bu sorunu, kodlama esnasında kod birimlerinin başına o kod biriminin yeni bir karakterin başlangıcı mı yoksa bir önceki kod biriminin kodladığı karakterin devamı mı olduğunu belirten bir takım işaretçi bitler koyarak çözmüştür.
Karakter kodlama düzeni
Karakter kodlama düzenleri (İngilizce kısaltmasıyla CES) sabit uzunluktaki kod değerlerinin oktet dizilerine eşlenme işleminin kurallarını belirler. Günümüzde bilgisayar sistemleri verileri sekiz bitten oluşan baytlar halinde gruplandırarak kullandığı için kodlanmış bit dizilerini oktetlere (yani sekiz bitten oluşan baytlara) dönüştürme işlemi metinsel veriyi oktet tabanlı dosya sistemlerine kaydetmeye veya oktet tabanlı ağlar üzerinden aktarmaya elverişli hale getirmek açısından gerekli olmaktadır. UTF-8 kodlama biçimi zaten 8-bitten oluşan kod birimleri kullanıdığından UTF-8 ile kodlanmış metinler için ayrı bir karakter kodlama düzeni gerekmez. Ancak örneğin UTF-16 ve UTF-32 kodlama biçimleri sırasıyla 16 ve 32 bitten oluşan kod birimleri kullandığı için bunlar ile kodlanmış verinin oktetlere dönüştürülmesi gerekir. Bu dönüştürme sürecinde iki farklı yol mevcuttur: büyük basamaklı kısımların önce geldiği (big-endian) veya tam tersi (little-endian). Dolayısıyla bu Unicode kodlama biçimleri için kullanılan kodlama düzeni baytların basamak sırasının (endian) nasıl olacağını belirtmekten ibarettir. Ancak bunlardan başka olarak bileşik karakter kodlama düzenleri ( gibi) de bulunmaktadır ki bunlar basit kodlama düzenleri arasında geçiş yapabilmek için kaçış dizileri (escape sequence) kullanırlar. Ayrıca kod birimi başına düşen bayt sayısını en aza indirmeye çalışan sıkıştırma düzenleri de mevcuttur (, ve gibi). Ayrıntılar için bakabilirsiniz.
Karakter kodlama biçimleriyle karakter kodlama düzenleri birbirleriyle karıştırılmamalıdır. Unicode teknik raporunda bu farklar şu şekilde açıklanmıştır:
- Kodlama biçimi kod noktalarını bir veya daha fazla kod birimine dönüştürürken, kodlama düzeni bu kod birimi dizilerini bayt dizilerine dönüştürür. (Karakterleri doğrudan doğruya diziselleştirilmiş (serialized) baytlara dönüştürme işlemi ise karakter eşlem olarak adlandırılır)
- Bir bayttan daha geniş kod birimi kullanan kodlama biçimleri bayt dizilerine dönüştürülürken kodlama düzenleri tarafından bayt basamak sırası göz önünde bulundurulmalıdır.
Son olarak, farklı bölgelerde farklı şekillerde kullanıldığı halde Unicode tarafından tek bir karakter altında birleştirilen farklı bölgesel biçimlerden birini seçmek için gerekli ek bilgiyi sağlayan bir bir üst düzey protokol kullanılabilir. XML dilindeki xml:lang özniteliği buna bir örnektir.
Unicode modeline göre karakter eşlem terimi, karakterleri doğrudan bayt dizilerine dönüştüren, yani CCS, CEF ve CES katmanlarının her birini içinde bulunduran eski sistemleri ifade etmek için kullanılır.
Kaynakça
- ^ a b c "Unicode Technical Report #17: Unicode Character Encoding Model". 11 Kasım 2008. 25 Haziran 2015 tarihinde kaynağından . Erişim tarihi: 8 Ağustos 2009.
- ^ "Unicode Technical Report #17: Unicode Character Encoding Model, Character Encoding Scheme başlığı". 11 Kasım 2008. 25 Haziran 2015 tarihinde kaynağından . Erişim tarihi: 4 Nisan 2015.
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
Bilisimde karakter kodlamasi kavrami bir cesit kodlama sistemi kullanilarak kodlanmis karakter gruplarini temsil etmektedir Soyutlama duzeyi ve kullanildigi baglama bagli olarak karakterlere karsilik gelen kod noktalari ve bunlarin olusturduklari kod alani dogal sayilar elektrik sinyalleri vb seklinde algilanabilir Metinsel verilerin islenmesi depolanmasi ve iletimi esnasinda karakter kodlamalari kullanilir Karakter seti karakter eslem veya kod sayfasi gibi ifadeler karakter kodlamasi kavramiyla es anlamliymis gibi kullanilsa da aralarinda bazi anlam farklari bulunmaktadir Deneme ilkbahar sonbahar logosu Optik ve elektronik telgrafla iliskili eski karakter kodlari yazili dilde kullanilan karakterlerin buyuk harfler rakamlar ve bazi noktalama isaretleri gibi yalnizca belli bir kismini temsil edebiliyordu Cagdas bilgisayar sistemlerinde verilerin sayisal olarak temsil edilmesinin oldukca dusuk maliyetli olmasi sayesinde karakter temsili cok daha ayrintili olabilmektedir Unicode da oldugu gibi Gunumuzde dunyadaki bircok yazi dilinde kullanilan eskisinden cok daha fazla karakter karakter kodlamalari araciligiyla dijital ortamda temsil edilebilmektedir Karakterler kodlanirken onceden belirlenmis uluslararasi standartlara uyulmasi metinlerin tum dunyada elektronik olarak takas edilmesine olanak tanimaktadir Unicode kodlama modeliUnicode ve paralel standardi ISO IEC 10646 modern birlestirilmis bir karakter kodlama sisteminin olusmasini saglamistir Karakterleri dogrudan sekizli bit degerleri olarak baytlar halinde kodlamak yerine bu sureci ayri asamalara bolmustur Bu standartla hangi karakterlerin kodlama standardina dahil edileceginin belirlenmesi karakter dagarciginin belirlenmesi bu karakterlerin her birine birer numara verilmesi kodlu karakter kumesinin olusturulmasi karakterlere verilen numaralar icin kodlama bicimlerinin belirlenmesi ve en sonunda da karakterlerin belirlenen yontemlerden birine gore birler ve sifirlar halinde kodlanmasi islemleri birbirinden ayrilmistir Birinci asama diger tum asamalarin ortak zeminini olusturmaktadir Boylece farkli kodlama turlerinin temel alacagi ortak bir karakter kumesi olusturulmak istenmistir ASCII ve genisletilmis ASCII sistemlerinde bu asamalarin hepsi tek parca halindeydi Dolayisiyla kodlama sistemleri arasinda uyumsuzluk soz konusuydu Her bir genisletilmis ASCII setinde farkli bir karakter kumesi bulunuyordu Unicode kodlama sistemlerinin ise tamami ayni ortak karakter dagarcigini esas alir Bu modelin nasil isledigini anlatabilmek icin karakter kumesi ve karakter kodlamasi gibi belirsiz terimler yeterli olmamaktadir Bu modeli aciklarken kullanilan terimler sunlardir Karakter dagarcigi Karakter dagarcigi bir sistemin destekledigi soyut karakterlerin tamamindan olusan gruba verilen addir Bu dagarcik kapali ya da acik olabilir Kapali olmasi durumunda dagarciga yeni bir karakter eklenebilmesi icin yeni bir standart olusturulmalidir ornegin ASCII standardina yeni karakterler eklenebilmesi icin adiyla yeni bir standart olusturulmasi gerekti cunku ASCII kapali bir karakter dagarcigindan olusuyordu Acik olmasi durumunda eklemelerin yapilmasi mumkun olmaktadir ornegin Unicode sistemi tamamen ve Unicode oncesinde Windows isletim sisteminde kullanilan kodlama standardi olan Windows kod sayfalari kismen aciktir Karakter dagarciklari yazi sistemlerinin en temel bilesenlerine nasil ayrilabilecegi uzerinde dusunulerek olusturulur Latin alfabesi ve turevleri Yunan alfabesi ve Kiril alfabesi degisik siralamalarla art arda dizildiklerinde okunabilen metinler olusturabilecek temel harflere noktalama isaretlerine sayilara ve bosluk karakteri gibi bazi ozel karakterlere ayrilabilir Birimlerine ayrilmasi kolay gibi gorunen bu alfabelerde bile aksan isaretleri gibi bazi onemli sorunlar ortaya cikmaktadir aksanli karakterler basli basina ayri birer karakter olarak da dusunulebilirler aksansiz harf ve aksan isaretinin bir araya gelerek olusturdugu karakter grubu olarak da dusunulebilirler Birinci durum metinlerin islenmesini kolaylastiracaktir ancak ikinci durum tum aksan ve harf kombinasyonlarini olanakli kilmak icin kullanisli bir yol saglayacaktir Ayrica bazi Bati dillerinde yan yana gelen bazi harflerin gorsel zenginlik saglamak amaciyla birlestirilmesi olan tipografik baglarin ligatur yazimi da benzer sekilde sorun olusturmaktadir Arapca ve Ibranice gibi baska yazi sistemlerinin sagdan sola yaziliyor olmasi ve ayrica Arapcada ayni harfin tek basinayken kelimenin basindayken ortasindayken ve en sondayken farkli sekillerde yaziliyor olmasi cift yonlu metinlerin desteklenmesi ve gliflerin farkli kosullarda farkli sekillerde yazilmasinin olanakli hale getirilmesi acisindan sorun olusturmaktadir Kodlu karakter kumesi Kodlu karakter kumesi Ingilizce kisaltmasiyla CCS karakter dagarciklarinin kod noktasi adi verilen genellikle negatif olmayan tam sayilar kullanilarak nasil temsil edilecegini belirtir Ornegin Latin harflerini de iceren karakter dagarciginda A harfi 65 sayisiyla siradaki diger harfler de 66 67 seklinde devam eden sayilarla eslestirilebilir Dolayisiyla boyle bir sistemde A harfinin kod noktasi 65 tir denir Karakterlere atanan bu sayilar yazi birimlerinin dijital ortamda temsil edilmesinin ilk asamasi olarak dusunulebilir Daha sonraki asamada kod noktalarinin hangi yontemle 1 lere ve 0 lara donusturulecegi ve bu esnada hangi uzunlukta kod birimlerinin kullanilacigina karar verilecektir Karakter dagarcigindaki tum karakterler ve onlara karsilik gelen sayilarin birlikte olusturdugu gruba kodlu karakter kumesi denir Cesitli kodlanmis karakter kumeleri ayni dagarcigi paylasabilirler ornegin ISO IEC 8859 1 ve IBM 037 ve 500 numaralari kod sayfalari ayni dagarcigi paylasmaktadir ama bu karakterleri farkli sayilarla eslestirmislerdir kodlu karakter kumesinde her kod noktasi sadece bir karakteri temsil eder yani kodlu karakter kumesi bir fonksiyondur Kod birimi Karakter kodlamasi Kod birimi genisligiYedi bitUTF 8 Sekiz bitEBCDIC Alti bitOn alti bitOtuz iki bit Kod birimi kodlama duzenlerinin karakterleri bit dizilerine donustururken kullandigi en kucuk birimin genisligidir Kodlanmis karakterler bir veya daha fazla sayida kod biriminden olusur Karakter kodlama bicimi Karakter kodlama bicimi Ingilizce kisaltmasiyla CEF kodlu karakter kumesinde bulunan kod noktalarinin sayilari belirli uzunluktaki bitlerle ikili bicimde temsil eden bir sistem uzerinde yani tum bilgisayar sistemlerinde depolanabilecek bir sekilde iki tabaninda ifade edilen kod degerlerine nasil donusturulecegini belirleyen kurallar butunudur Bilgisayar sistemleri ikil verileri tek tek bitler halinde kullanmaz Verinin islenmesi ve alinip verilmesini kolaylastirabilmek icin verileri belirli uzunluktaki kaliplar halinde ifade ederler Bu yuzden kod noktalari da bitlerle ifade edilirken bir veya daha cok sabit uzunluklu kod birimiyle ifade edilmelidir Bu kod birimlerinin uzunlugu belirlenirken kullanilan bilgisayar sisteminin teknik ozelliklerini goz onunde bulundurmak gereklidir Bunlar bayt uzunlugu ve uzunlugudur Bellekte adreslenebilen en kucuk veri parcasi bayt olarak adlandirilir Baytlar genellikle 8 bit uzunlugundadir Sozcuk ise islemci tarafindan tek seferde islenebilen en buyuk veri uzunlugudur ve genelde iki bayttir 16 bit 8 bitlik baytlar kullanan bir sistemde veriler 8 bit ve katlari halinde okunur yazilir ve aktarilir Ornegin karakter kodlamasinda kod biriminin 16 bit uzunlugunda secildigini dusunelim Boyle bir sistemde 0 ile 65 535 arasindaki sayilar yani Unicode Temel Cokdilli Duzleminde bulunan kod noktasi sayisi tek bir 16 bitlik birim ile yazilabilirken daha buyuk sayilar icin birden fazla birim kullanilmasi gerekecektir Tek bir kod birimi de tam olarak iki baytla 8 bitlik ifade edilebilir 32 bitlik birimler kullanildiginda ise tum kod noktalari birer birimle ifade edilebilir Ancak bu durumda verinin kapladigi yer cok artacak ve dolayisiyla tasinmasi zorlasacaktir Iste karakter kodlama bicimlerinin uygun bir sekilde yonetmesi gereken durum budur sinirli bir aralikta bulunan ornegin 0 ile 1 4 milyon arasi tek bir kod noktasini her biri daha sinirli bir araliktaki sayilari temsil edebilen bir ya da daha fazla kod biriminden ornegin her biri 0 ile 65 525 arasi sayilari temsil edebilen 16 bitlik kod birimlerinden olusan kod degerlerine donusturmek icin bir yontem belirler Bu yontemi belirlerken verinin islenme kolayligi ve kaplayacagi yeri goz onunde bulundurmalari gerekir En basit karakter kodlama bicimi her bir kod noktasinin tek bir kod birimiyle ifade edilebilecegi sekilde buyuk kod birimleri secilerek yapilan bir kodlama olacaktir bir kod noktasinin bir kod biriminden olusan bir kod degerine karsilik geldigi Bu yontem 8 bitlik birimlere sigabilen kodlanmis karakter kumeleri icin ornegin eskiden kalan genisletilmis ASCII kodlamalarinin cogu gibi gayet iyi ve 16 bitlik birimlere sigabilenler icin de ornegin Unicode un eski surumleri gorece daha az sayida karakter icerdigi icin az cok iyi islemektedir Ancak kodlu karakter kumesinin boyutu buyudukce bu yontem giderek verimsizlesmektedir Ornegin Unicode un gunumuzdeki surumundeki her karakteri bu yontemle kodlamak icin 21 bit uzunlugunda kod birimleri kullanmak gerekecektir Hatta cogu sistem verileri 8 bit ve katlari seklinde temsil ettiginden kod birimi en az 24 bit uzunlugunda olacaktir Boyle bir sistem veri boyutu sorunun yani sira eski sistemlerde uygulanmasi da zor bir sistem oldugundan kullanissizdir Bu yuzden daha kucuk kod birimleri kullanan cesitli kodlama bicimleri tasarlanmistir Unicode un ileriki surumleriyle calisan sistemler ya UTF 8 ya da kodlama bicimlerini kullanmaktadir UTF 8 kod noktalarini bir veya daha fazla sayida 8 bitlik kod birimleriyle ve da iki adet 16 bitlik kod birimiyle ifade eder Karakter kodlama bicimleri daha once de belirtildigi gibi her karakteri tek bir kod birimiyle kodlarsa bu sekilde kodlanmis bir karakter dizisinde art arda gelen karakterlerin nerede baslayip nerede bittigi belirli olacaktir her karakter sabit uzunluktaki bir bit dizisiyle ifade edildiginden Ancak UTF 8 ve gibi karakterlerin bir veya fazla kod biriminden olusabildigi kodlamalarla kodlanmis karakter dizileri yazilimlar tarafindan islenirken bir karakterin nerede bitip digerinin nerede basladiginin anlasilabilmesi onemli bir sorun olarak ortaya cikmistir Farkli kodlama bicimleri farkli yontemler kullanarak bu sorunun ustesinden gelmislerdir Ornegin kisaca soylemek gerekirse UTF 8 kodlamasi bu sorunu kodlama esnasinda kod birimlerinin basina o kod biriminin yeni bir karakterin baslangici mi yoksa bir onceki kod biriminin kodladigi karakterin devami mi oldugunu belirten bir takim isaretci bitler koyarak cozmustur Karakter kodlama duzeni Karakter kodlama duzenleri Ingilizce kisaltmasiyla CES sabit uzunluktaki kod degerlerinin oktet dizilerine eslenme isleminin kurallarini belirler Gunumuzde bilgisayar sistemleri verileri sekiz bitten olusan baytlar halinde gruplandirarak kullandigi icin kodlanmis bit dizilerini oktetlere yani sekiz bitten olusan baytlara donusturme islemi metinsel veriyi oktet tabanli dosya sistemlerine kaydetmeye veya oktet tabanli aglar uzerinden aktarmaya elverisli hale getirmek acisindan gerekli olmaktadir UTF 8 kodlama bicimi zaten 8 bitten olusan kod birimleri kullanidigindan UTF 8 ile kodlanmis metinler icin ayri bir karakter kodlama duzeni gerekmez Ancak ornegin UTF 16 ve UTF 32 kodlama bicimleri sirasiyla 16 ve 32 bitten olusan kod birimleri kullandigi icin bunlar ile kodlanmis verinin oktetlere donusturulmesi gerekir Bu donusturme surecinde iki farkli yol mevcuttur buyuk basamakli kisimlarin once geldigi big endian veya tam tersi little endian Dolayisiyla bu Unicode kodlama bicimleri icin kullanilan kodlama duzeni baytlarin basamak sirasinin endian nasil olacagini belirtmekten ibarettir Ancak bunlardan baska olarak bilesik karakter kodlama duzenleri gibi de bulunmaktadir ki bunlar basit kodlama duzenleri arasinda gecis yapabilmek icin kacis dizileri escape sequence kullanirlar Ayrica kod birimi basina dusen bayt sayisini en aza indirmeye calisan sikistirma duzenleri de mevcuttur ve gibi Ayrintilar icin bakabilirsiniz Karakter kodlama bicimleriyle karakter kodlama duzenleri birbirleriyle karistirilmamalidir Unicode teknik raporunda bu farklar su sekilde aciklanmistir Kodlama bicimi kod noktalarini bir veya daha fazla kod birimine donustururken kodlama duzeni bu kod birimi dizilerini bayt dizilerine donusturur Karakterleri dogrudan dogruya dizisellestirilmis serialized baytlara donusturme islemi ise karakter eslem olarak adlandirilir Bir bayttan daha genis kod birimi kullanan kodlama bicimleri bayt dizilerine donusturulurken kodlama duzenleri tarafindan bayt basamak sirasi goz onunde bulundurulmalidir Son olarak farkli bolgelerde farkli sekillerde kullanildigi halde Unicode tarafindan tek bir karakter altinda birlestirilen farkli bolgesel bicimlerden birini secmek icin gerekli ek bilgiyi saglayan bir bir ust duzey protokol kullanilabilir XML dilindeki xml lang ozniteligi buna bir ornektir Unicode modeline gore karakter eslem terimi karakterleri dogrudan bayt dizilerine donusturen yani CCS CEF ve CES katmanlarinin her birini icinde bulunduran eski sistemleri ifade etmek icin kullanilir Kaynakca a b c Unicode Technical Report 17 Unicode Character Encoding Model 11 Kasim 2008 25 Haziran 2015 tarihinde kaynagindan Erisim tarihi 8 Agustos 2009 Unicode Technical Report 17 Unicode Character Encoding Model Character Encoding Scheme basligi 11 Kasim 2008 25 Haziran 2015 tarihinde kaynagindan Erisim tarihi 4 Nisan 2015