ASCII aslında aslında 7 bitlik bir kod olarak düşünülmüştür. Bu, 8 bitlik baytların her yerde bulunmasından çok önce yapıldı ve hatta 1990'larda bile, her bir metnin 8. bitini kendi amaçları için kullanabileceğini varsayan yazılımlar bulabiliyordunuz ("8 bitlik temiz değil"). Günümüzde insanlar bunu , 0x80'den 0xFF'ye kadar olan baytların tanımlanmış bir anlamı olmayan 8 bitlik bir kodlama olarak düşünüyor , ancak bu bir retcon .
8. biti kullanan düzinelerce metin kodlaması vardır; ASCII uyumlu veya değil ve sabit veya değişken genişlikli olarak sınıflandırılabilirler. ASCII uyumlu , bağlamdan bağımsız olarak , 0x00 ile 0x7F arasındaki değerlere sahip tek baytların ASCII'de olacakları aynı karakterleri kodladığı anlamına gelir . Kaçınabiliyorsanız, ASCII uyumlu olmayan bir metin kodlamayla hiçbir ilginiz olmasını istemezsiniz; ASCII bekleyen saf programlar, onları felaketle yanlış yorumlama eğilimindedir, genellikle güvenliği bozar. Bugünlerde o kadar kullanımdan kaldırıldılar ki (örneğin) HTML5, UTF-16'nın talihsiz istisnası dışında, genel Web'de kullanımlarını yasaklıyor . Artık onlar hakkında konuşmayacağım.
Sabit genişlikli kodlama, kulağa nasıl geldiği anlamına gelir: tüm karakterler aynı sayıda bayt kullanılarak kodlanır. ASCII uyumlu olması için, bir sabit kodlamanın tüm karakterlerini yalnızca bir bayt kullanarak kodlaması gerekir, böylece 256 karakterden fazla olamaz. Günümüzde en yaygın bu tür kodlama , ISO 8859-1'in bir uzantısı olan Windows- 1252'dir .
Bugünlerde bilinmeye değer tek bir değişken genişlikli ASCII uyumlu kodlama var, ancak çok önemli: Tüm Unicode'u ASCII uyumlu bir kodlamada paketleyen UTF-8 . Yönetebiliyorsanız bunu gerçekten kullanmak istiyorsunuz.
Son bir not olarak, "ASCII" bugünlerde pratik tanımını orijinal standardından (ANSI X3.4-1968) değil, Unicode'dan alıyor , çünkü tarihsel olarak ASCII 127 karakter repertuarında birkaç düzine varyasyon vardı - örneğin, bazıları Fransızca metnin iletimini kolaylaştırmak için noktalama işaretleri aksanlı harflerle değiştirilebilir. Günümüzde tüm bu varyasyonlar eskidir ve insanlar "ASCII" dediklerinde, 0x00 ile 0x7F arasındaki değerlere sahip baytların U + 0000 ile U + 007F arasındaki Unicode kod noktalarını kodladığı anlamına gelir. Bu muhtemelen sadece, kendinizi teknik bir standart yazarken bulursanız, sizin için önemli olacaktır.
ASCII'nin geçmişi ve ondan önceki kodlamalarla ilgileniyorsanız, "The Evolution of Character Codes, 1874-1968" (samizdat kopyası http://falsedoor.com/doc/ascii_evolution-of- adresinde) ile başlayın. karakter-kodları.pdf ) ve sonra referanslarını takip edin (bunların çoğu çevrimiçi olarak mevcut değildir ve bir üniversite kütüphanesine erişimle bile bulmak zor olabilir, üzgünüm).