ASCII dan Unicode: apa itu dan kegunaannya

Komputer hanya memahami nombor, jadi setiap huruf yang anda lihat pada skrin ialah satu kod. ASCII ialah jadual kod pertama yang menjadi piawaian dan Unicode ialah yang kita gunakan hari ini untuk menulis dalam apa-apa bahasa. Di sini anda akan lihat cara ia berfungsi, kod yang elok diketahui, mengapa kadangkala simbol pelik muncul menggantikan huruf beraksen dan cara menyemak semuanya dalam jadual.

Dikemas kini:

Apa itu pengekodan aksara

Pengekodan ialah satu persetujuan: «nombor 65 bermaksud huruf A». Apabila anda menulis teks, program menyimpan nombor itu; apabila orang lain membukanya, programnya menterjemah semula nombor itu kepada huruf menggunakan persetujuan yang sama. Jika kedua-duanya tidak menggunakan jadual yang sama, teks menjadi rosak.

Perlu dibezakan dua idea. Satu ialah set aksara, senarai nombor yang sepadan dengan simbol. Satu lagi ialah cara nombor itu disimpan dalam bait. Dalam ASCII keduanya sama secara mudah; dalam Unicode tidak, dan di situlah UTF-8 masuk.

ASCII: 128 aksara 7 bit

ASCII (singkatan American Standard Code for Information Interchange) dipiawaikan pada 1960-an. Ia menggunakan 7 bit, iaitu 2 pangkat 7 = 128 kod, dari 0 hingga 127. Daripadanya, 33 ialah aksara kawalan (0 hingga 31 dan 127) dan 95 boleh dicetak (32 hingga 126, termasuk ruang).

Ia tidak mengandungi huruf beraksen, ñ, atau simbol euro: ia direka untuk bahasa Inggeris. Itu menerangkan mengapa jadual lain diperlukan kemudian.

Kod yang paling kerap anda temui. Ruang (32) dikira boleh dicetak walaupun tidak kelihatan.
Aksara kawalanPerpuluhanPerenambelasanBinari (7 bit)Kegunaan
Nol (NUL)0000000000Menandakan penghujung rentetan dalam beberapa bahasa pengaturcaraan
Tab mendatar (TAB)9090001001Melompat ke perhentian tab seterusnya
Suapan baris (LF)100A0001010Turun ke baris seterusnya
Pulangan pengangkut (CR)130D0001101Kembali ke permulaan baris
Escape (ESC)271B0011011Memulakan urutan kawalan
Ruang32200100000Aksara pertama yang boleh dicetak
Padam (DEL)1277F1111111Memadam aksara

Hubungan yang elok diingat

Jadual ini tidak disusun secara rawak. Dengan beberapa keteraturan, anda boleh membaca kod dari ingatan.

Penghujung baris: LF, CR dan CRLF

Pemisah baris nampak mudah, tetapi ditulis berbeza mengikut sistem. Unix, Linux dan macOS menggunakan satu aksara, LF (10). Windows menggunakan dua berturut-turut, CR dan LF (13 dan 10), dikenali sebagai CRLF. Mesin teleprinter lama memerlukan dua arahan berbeza: mengembalikan pembawa ke permulaan dan menggerakkan kertas satu baris.

Perbezaan itu menjadi punca fail yang kelihatan semuanya dalam satu baris dalam editor asas, atau dengan simbol pelik di hujung setiap baris. Jika anda ingin tahu kod setiap satu, taip LF atau CR dalam kotak carian jadual ASCII.

«ASCII lanjutan» bukan piawaian

Oleh kerana satu bait ada 8 bit dan ASCII hanya menggunakan 7, ada 128 kod bebas (128 hingga 255) dan setiap pengeluar dan wilayah mengisinya dengan cara masing-masing. Ini dikenali sebagai «ASCII lanjutan», tetapi tiada satu jadual tunggal: ada banyak, dipanggil halaman kod. Dua yang paling terkenal ialah Latin-1 (ISO-8859-1), yang mana é ialah kod 233, dan Windows-1252, yang serupa tetapi berbeza pada kod 128 hingga 159 (di situ ada, sebagai contoh, euro).

Masalahnya ialah kod 233 bermaksud «é» dalam satu jadual dan sesuatu yang lain dalam jadual lain. Teks yang ditulis dengan satu jadual dan dibaca dengan jadual lain menunjukkan sampah. Unicode lahir untuk menamatkan kekacauan itu.

Unicode dan UTF-8

Unicode memberi satu nombor unik, dipanggil titik kod, kepada setiap aksara bagi hampir semua sistem tulisan di dunia, ditambah simbol dan emoji. Hari ini ia mempunyai lebih 150,000 aksara. Ia ditulis dengan awalan U+ dan dalam perenambelasan: «A» ialah U+0041, «ñ» ialah U+00F1, euro ialah U+20AC dan emoji muka tersenyum ialah U+1F600. 128 titik kod pertama adalah tepat sama dengan ASCII.

UTF-8 ialah cara paling banyak digunakan untuk menyimpan nombor itu dalam bait, dan menggunakan 1 hingga 4 mengikut aksara. 128 aksara ASCII menggunakan satu bait yang serupa seperti dahulu, jadi teks ASCII juga ialah teks UTF-8 yang sah. Selebihnya menggunakan lebih banyak bait.

Semakin jauh daripada ASCII, semakin banyak bait yang digunakan aksara itu.
AksaraTitik kodBait dalam UTF-8Bait (perenambelasan)
AU+0041141
éU+00E92C3 A9
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Mengapa «Ã±» muncul menggantikan «ñ»

Ini ialah ralat paling biasa dan ada penjelasan tepat. ñ dalam UTF-8 ialah dua bait: C3 dan B1. Jika program menyangka teks itu dalam Latin-1, ia membaca setiap bait sebagai satu aksara: C3 ialah «Ã» dan B1 ialah «±». Hasilnya: «Ã±». Perkara yang sama berlaku dengan «é», yang kelihatan sebagai «Ã©», dan dengan «canción», yang muncul sebagai «canción».

Penyelesaiannya hampir selalu ialah memberitahu program supaya membuka fail sebagai UTF-8 (dalam editor teks atau dalam tetapan import hamparan). Apabila berlaku sebaliknya, teks Latin-1 dibaca sebagai UTF-8, biasanya muncul berlian dengan tanda soal, kerana bait tunggal itu tidak membentuk urutan UTF-8 yang sah.

Cara menggunakan jadual ASCII dan penukar

Alat «Jadual ASCII» menunjukkan 128 aksara dengan kodnya dalam perpuluhan, perenambelasan, perlapanan dan binari, serta nama aksara kawalan.

  1. Taip dalam kotak carian («Cari aksara atau kod») satu aksara, kod atau nama aksara kawalan (contohnya A, 65, 41 atau LF) untuk mencari barisnya.
  2. Gunakan butang tapis (Kawalan, Digit, Huruf besar, Huruf kecil, Simbol) untuk melihat satu kumpulan sahaja.
  3. Untuk menukar, taip teks dalam «Teks» dan pilih format (perpuluhan, perenambelasan, perlapanan atau binari): kod muncul di bawah. «Hola» memberi 72 111 108 97 dalam perpuluhan dan 48 6F 6C 61 dalam perenambelasan.
  4. Anda juga boleh membuatnya sebaliknya: tampal kod yang dipisahkan oleh ruang atau koma dalam «Kod» dan teks dibina. Dalam perenambelasan, awalan seperti 0x41 diterima.

Jika teks mengandungi aksara bukan ASCII, seperti ñ, alat memberi amaran dan menunjukkan kod Unicode-nya. Untuk melihat bait sebenar dalam UTF-8, gunakan «Teks ke binari»: ñ memberi 11000011 10110001, dua bait 8 bit. Batasannya: jadual hanya menunjukkan ASCII piawai, bukan lanjutan, dan semuanya dikira dalam pelayar anda tanpa menghantar teks ke mana-mana pelayan.

Soalan lazim

Berapa banyak aksara dalam ASCII?

128, dengan kod dari 0 hingga 127 dan 7 bit setiap satu. Daripadanya, 33 ialah kawalan dan 95 boleh dicetak, termasuk ruang.

Apakah kod ASCII bagi huruf A dan a?

«A» ialah 65 (41 dalam perenambelasan, 01000001 dalam binari) dan «a» ialah 97 (61 dalam perenambelasan, 01100001 dalam binari). Perbezaannya sentiasa 32.

Apakah beza antara ASCII dan Unicode?

ASCII mempunyai 128 aksara yang direka untuk bahasa Inggeris. Unicode mempunyai lebih 150,000, daripada hampir semua bahasa dan emoji, dan 128 yang pertama sama dengan ASCII.

Apa itu UTF-8?

Ia cara paling banyak digunakan untuk menyimpan teks Unicode dalam bait. Ia menggunakan 1 hingga 4 bait setiap aksara: aksara ASCII menggunakan satu, ñ menggunakan dua dan emoji empat.

Mengapa teks saya menunjukkan «Ã±» atau «Ã©»?

Kerana teks yang disimpan dalam UTF-8 sedang dibaca sebagai Latin-1. Buka fail dengan menyatakan pengekodan UTF-8 dan masalah selesai.