Anasayfa » nasıl » İngilizce Karakterler Neden Diğer Alfabelerdeki Karakterlerden Daha İyi Temsil Edilmeli?

    İngilizce Karakterler Neden Diğer Alfabelerdeki Karakterlerden Daha İyi Temsil Edilmeli?

    Birçoğumuz hakkında düşünmeyi bırakmamış olsak da, alfabetik karakterler onları temsil etmek için gereken bayt sayısında aynı boyutta değildir. Ama neden bu? Bugünün Süper Kullanıcı Soru-Cevap yazısında meraklı bir okuyucunun sorusunun cevabı var.

    Bugünün Soru ve Cevap oturumu bize topluluk tarafından yönlendirilen bir soru-cevap web sitesi grubu olan Stack Exchange'in bir alt birimi olan SuperUser'ın izniyle geliyor..

    Kısmi ASCII Chart ekran görüntüsü Wikipedia izniyle.

    Soru

    SuperUser okuyucu khajvah, farklı alfabelerin kaydedildiğinde neden farklı miktarlarda disk alanı kullandığını bilmek istiyor:

    Bir metin dosyasına 'a' yazıp kaydettiğimde 2 bayt boyutunda yapıyor. Ama içine 'ա' (Ermeni alfabesinden gelen bir mektup) gibi bir karakter koyduğumda, boyutu 3 bayt yapar..

    Bir bilgisayardaki alfabe arasındaki fark nedir? İngilizce kaydedildiğinde neden daha az yer kaplıyor??

    Harfler harftir, değil mi? Belki de değil! Bu alfabetik gizemin cevabı nedir??

    Cevap

    Süper Kullanıcı Katkıda Bulunanlar Doktoro Reichard ve ernie bize cevap veriyor. İlk olarak, Doktoro Reichard:

    Yaygın bilgisayarlarda kullanılmak üzere geliştirilen ilk kodlama şemalarından biri ASCII'dir (Bilgi değişimi için Amerikan Standart kodustandart. Amerika Birleşik Devletleri'nde 1960'larda geliştirilmiştir.

    İngilizce alfabe, Latin alfabesinin bir bölümünü kullanır (örneğin, İngilizce'de birkaç vurgulu kelime vardır). Harf düşünülmeden bu alfabede 26 ayrı harf vardır. Ayrıca, İngilizce alfabeyi kodlayan gibi görünen herhangi bir düzende bireysel sayılar ve noktalama işaretleri bulunmalıdır..

    1960'lar aynı zamanda bilgisayarların şu an sahip olduğumuz miktarda bellek ya da disk alanına sahip olmadığı bir zamandı. ASCII, tüm Amerikan bilgisayarlarında işlevsel bir alfabenin standart bir temsili olarak geliştirilmiştir. O zamanlar, her ASCII karakterini 8 bit (1 byte) uzun yapma kararı, zamanın teknik detayları nedeniyle verilmişti (Wikipedia makalesi, delikli kasetin bir anda 8 bit tuttuğu gerçeğinden bahsetmektedir). Aslında, orijinal ASCII şeması 7 bit kullanılarak iletilebilir ve sekizinci parite kontrolleri için kullanılabilir. Daha sonraki gelişmeler, orijinal ASCII şemasını birkaç aksanlı, matematiksel ve terminal karakter içerecek şekilde genişletti..

    Dünyadaki bilgisayar kullanımındaki son artışla birlikte, farklı dillerden giderek daha fazla insan bir bilgisayara erişiyordu. Bu, her dil için, farklı dil terminallerinden okunduğunda çakışacak, diğer programlardan bağımsız olarak yeni kodlama şemalarının geliştirilmesi gerektiği anlamına geliyordu..

    Unicode, tüm olası anlamlı karakterleri tek bir soyut karakter setinde birleştirerek farklı terminallerin varlığına bir çözüm olarak ortaya çıktı..

    UTF-8, Unicode karakter kümesini kodlamanın bir yoludur. Değişken genişlikte bir kodlamadır (yani farklı karakterler farklı boyutlarda olabilir) ve önceki ASCII şemasıyla geriye dönük uyumluluk için tasarlanmıştır. Bu haliyle, ASCII karakter seti bir bayt olarak kalacakken, diğer karakterlerin boyutu iki ya da daha fazla bayt olacaktır. UTF-16, Unicode karakter kümesini kodlamanın başka bir yoludur. UTF-8'e kıyasla, karakterler bir veya iki 16 bitlik kod birimi kümesi olarak kodlanır.

    Diğer yorumlarda belirtildiği gibi, 'a' karakteri tek bir bayt, 'ա' ise UTF-8 kodlamasını ifade eden iki byte kaplar. Asıl sorudaki fazlalık bayt, sonuçta yeni satır karakterinin varlığından kaynaklanıyordu..

    Ernie'den gelen cevabı takip etti:

    1 bayt 8 bittir ve bu nedenle 256 (2 ^ 8) farklı değere kadar temsil edebilir.

    Bundan daha fazla olasılık gerektiren diller için, 1'den 1'e kadar basit bir haritalama korunamaz, bu nedenle karakter kaydetmek için daha fazla veri gerekir.

    Genel olarak, çoğu kodlamanın ASCII karakterleri için ilk 7 bit (128 değer) kullandığını unutmayın. Bu, 8'inci bit veya daha fazla karakter için 128 değer daha bırakır. Aksanlı karakterler, Asya dilleri, Kiril vb. Ekleyin ve neden 1 baytın tüm karakterleri tutmak için yeterli olmadığını kolayca görebilirsiniz..


    Açıklamaya eklemek için bir şey var mı? Yorumlarda ses kesiliyor. Diğer teknoloji meraklısı Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Burada tüm tartışma konusuna göz atın.