ASCII memang awalnya dipahami sebagai kode 7-bit. Hal ini dilakukan dengan baik sebelum byte 8-bit tersedia di mana-mana, dan bahkan hingga tahun 1990-an Anda dapat menemukan perangkat lunak yang mengasumsikan dapat menggunakan bit ke-8 dari setiap byte teks untuk tujuannya sendiri ("bukan 8-bit bersih"). Saat ini orang menganggapnya sebagai pengkodean 8-bit di mana byte 0x80 hingga 0xFF tidak memiliki arti yang ditentukan, tetapi itu retcon .
Ada lusinan pengkodean teks yang menggunakan bit ke-8; mereka dapat diklasifikasikan sebagai kompatibel dengan ASCII atau tidak, dan lebar tetap atau variabel. Kompatibel dengan ASCII artinya apa pun konteksnya , byte tunggal dengan nilai dari 0x00 hingga 0x7F menyandikan karakter yang sama dengan yang mereka lakukan di ASCII. Anda tidak ingin ada hubungannya dengan pengkodean teks yang tidak kompatibel dengan ASCII jika Anda mungkin dapat menghindarinya; Program naif yang mengharapkan ASCII cenderung salah menafsirkannya dengan cara yang sangat berbahaya, seringkali merusak keamanan. Mereka sangat usang saat ini sehingga (misalnya) HTML5 melarang penggunaannya di Web publik, dengan pengecualian yang tidak menguntungkan dari UTF-16 . Saya tidak akan membicarakannya lagi.
Pengkodean lebar tetap berarti seperti apa suaranya: semua karakter dikodekan menggunakan jumlah byte yang sama. Agar kompatibel dengan ASCII, pengkodean tetap-dengan harus mengenkode semua karakternya hanya menggunakan satu byte, sehingga tidak boleh lebih dari 256 karakter. Pengkodean yang paling umum saat ini adalah Windows-1252 , perpanjangan dari ISO 8859-1 .
Hanya ada satu pengkodean yang kompatibel dengan ASCII dengan lebar variabel yang perlu diketahui saat ini, tetapi ini sangat penting: UTF-8 , yang mengemas semua Unicode ke dalam pengkodean yang kompatibel dengan ASCII. Anda benar-benar ingin menggunakan ini jika Anda bisa mengelolanya.
Sebagai catatan terakhir, "ASCII" saat ini mengambilnya praktisnya definisi dari Unicode, bukan standar aslinya (ANSI X3.4-1968), karena secara historis terdapat beberapa lusin variasi pada repertoar ASCII 127 karakter - misalnya, beberapa tanda baca mungkin diganti dengan huruf beraksen untuk memfasilitasi transmisi teks bahasa Prancis. Saat ini semua variasi tersebut sudah usang, dan ketika orang mengatakan "ASCII" itu berarti bahwa byte dengan nilai 0x00 sampai 0x7F menyandikan titik kode Unicode U + 0000 sampai U + 007F. Ini mungkin hanya penting bagi Anda jika Anda pernah menulis standar teknis.
Jika Anda tertarik dengan sejarah ASCII dan pengkodean sebelumnya, mulailah dengan makalah "The Evolution of Character Codes, 1874-1968" (salinan samizdat di http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ) dan kemudian mengejar referensinya (banyak di antaranya tidak tersedia secara online dan mungkin sulit ditemukan bahkan dengan akses ke perpustakaan universitas, dengan menyesal saya katakan).