Laman » bagaimana untuk » Mengapa Karakter Bahasa Inggeris memerlukan Baki Kecil untuk Mewakili Mereka daripada Watak dalam Alphabets Lain?

    Mengapa Karakter Bahasa Inggeris memerlukan Baki Kecil untuk Mewakili Mereka daripada Watak dalam Alphabets Lain?

    Walaupun sebahagian besar daripada kita mungkin tidak pernah berhenti untuk memikirkannya, aksara abjad tidak semua saiz yang sama dalam bilangan bait yang diperlukan untuk mewakili mereka. Tetapi kenapa begitu? Siaran Q & A SuperUser hari ini mempunyai jawapan kepada soalan pembaca yang ingin tahu.

    Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.

    Petikan ASCII Separa tangkapan gambar dari Wikipedia.

    Soalan

    Pembaca SuperUser khajvah ingin tahu mengapa alphabets berbeza mengambil jumlah ruang cakera yang berbeza apabila disimpan:

    Apabila saya meletakkan 'a' dalam fail teks dan menyimpannya, ia menjadikannya 2 bait dalam saiz. Tetapi apabila saya meletakkan aksara seperti '' (huruf dari abjad Armenia), ia menjadikannya 3 bait dalam saiz.

    Apakah perbezaan di antara huruf di komputer? Mengapa bahasa Inggeris mengambil ruang yang kurang apabila disimpan?

    Surat adalah huruf, bukan? Mungkin tidak! Apakah jawapan kepada misteri abjad ini?

    Jawapan

    Penyumbang SuperUser Doktoro Reichard dan ernie mempunyai jawapan untuk kami. Pertama, Doktoro Reichard:

    Salah satu skim pengekodan pertama yang akan dibangunkan untuk digunakan dalam komputer arus perdana adalah ASCII (Kod Standard Amerika untuk Pertukaran Maklumat) standard. Ia dibangunkan pada tahun 1960-an di Amerika Syarikat.

    Abjad Inggeris menggunakan sebahagian daripada abjad Latin (contohnya, terdapat beberapa kata-kata beraksen dalam bahasa Inggeris). Terdapat 26 huruf individu dalam abjad itu, tidak menganggap kes. Dan juga perlu ada nombor individu dan tanda baca dalam mana-mana skema yang berpura-pura menyandarkan abjad Inggeris.

    1960-an juga adalah masa ketika komputer tidak mempunyai jumlah memori atau ruang cakera yang kita ada sekarang. ASCII telah dibangunkan untuk menjadi perwakilan standard abjad berfungsi di seluruh komputer Amerika. Pada masa itu, keputusan untuk membuat setiap watak ASCII 8 bit (1 bait) panjang dibuat kerana butiran teknikal masa itu (artikel Wikipedia menyebut fakta bahawa pita berlubang memegang 8 bit dalam kedudukan pada satu masa). Malah, skema ASCII asal boleh dihantar menggunakan 7 bit, dan kelapan boleh digunakan untuk pemeriksaan pariti. Perkembangan selanjutnya mengembangkan skim ASCII asal untuk memasukkan beberapa aksara beraksen, matematik, dan terminal.

    Dengan peningkatan komputer terkini di seluruh dunia, semakin ramai orang dari pelbagai bahasa mempunyai akses kepada komputer. Ini bermakna, bagi setiap bahasa, skim pengekodan baru perlu dibangunkan, secara berasingan daripada skim lain, yang akan bertentangan jika dibaca dari terminal bahasa yang berbeza.

    Unicode menjadi penyelesaian kepada kewujudan terminal yang berbeza dengan menggabungkan semua aksara yang mungkin bermakna ke dalam satu set aksara abstrak.

    UTF-8 adalah salah satu cara untuk menyandikan set aksara Unicode. Ia adalah pengekodan lebar ubah (iaitu watak yang berlainan boleh mempunyai saiz yang berbeza) dan ia direka untuk keserasian ke belakang dengan skema bekas ASCII. Oleh itu, set aksara ASCII akan kekal satu bait dalam saiz sementara mana-mana aksara lain adalah dua atau lebih bait yang saiz. UTF-16 adalah cara lain untuk mengekod set aksara Unicode. Sebagai perbandingan kepada UTF-8, watak-watak dikodkan sebagai satu set satu atau dua unit kod 16-bit.

    Seperti yang dinyatakan dalam komen lain, watak 'a' menduduki satu byte manakala '' menduduki dua byte, menandakan pengekodan UTF-8. Byte tambahan dalam soalan asal adalah kerana wujudnya karakter baru pada akhir.

    Diikuti oleh jawapan dari ernie:

    1 byte adalah 8 bit, dan dengan itu boleh mewakili sehingga 256 (2 ^ 8) nilai yang berbeza.

    Untuk bahasa yang memerlukan lebih banyak kemungkinan daripada ini, pemetaan mudah 1 hingga 1 tidak dapat dikekalkan, jadi lebih banyak data diperlukan untuk menyimpan karakter.

    Perhatikan bahawa pada umumnya, kebanyakan pengekodan menggunakan 7 bit pertama (128 nilai) untuk aksara ASCII. Itu meninggalkan bit ke-8, atau 128 lagi nilai untuk lebih banyak aksara. Tambah aksara beraksen, bahasa Asia, Cyrillic, dan lain-lain dan anda boleh melihat dengan mudah mengapa 1 bait tidak mencukupi untuk memegang semua aksara.


    Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.