Dalam pekerjaan pengembangan front-end harian, kami sering berurusan dengan HTML, JavaScript, CSS dan bahasa lainnya. Seperti bahasa nyata, bahasa komputer juga memiliki alfabet, tata bahasa, leksik, metode pengkodean, dll. Di sini saya akan secara singkat berbicara tentang masalah pengkodean yang sering dihadapi dalam pekerjaan sehari-hari HTML dan JavaScript front-end.
Di komputer, informasi yang kami simpan diwakili oleh kode biner. Apa yang kita ketahui tentang konversi simbol seperti karakter Inggris dan Cina yang ditampilkan di layar dan kode biner yang digunakan untuk penyimpanan adalah pengkodean.
Ada dua konsep dasar yang harus dijelaskan, charset dan pengkodean karakter:
Charset, set karakter, yaitu, tabel hubungan pemetaan antara simbol dan angka, yaitu, ia menentukan bahwa 107 adalah 'a' dari Koubei, 21475 adalah "mulut" dari mulut ke mulut, dan tabel yang berbeda memiliki hubungan pemetaan yang berbeda, seperti ASCII, GB2312, unicode. Melalui tabel pemetaan angka dan karakter ini, kita dapat mengonversi bilangan biner yang diwakili menjadi karakter tertentu.
Metode pengkodean gramter, pengkodean. Misalnya, untuk angka 21475 yang harus "porting", haruskah kita menggunakan /u5k3e3 untuk mewakilinya, atau%e5%8f%a3 untuk mewakilinya? Ini ditentukan oleh pengkodean karakter.
Untuk string seperti 'cuoxin.com', mereka biasanya digunakan karakter untuk orang Amerika. Mereka telah merumuskan set karakter yang disebut ASCII, dengan nama lengkapnya adalah American Standard Code of Information Interchange. 128 angka 0127 (ke daya ke-7 dari 2, 0 × 00-0 × 7F) yang mewakili 128 karakter yang umum digunakan seperti 123ABC. Ada 7 bit secara total, dan yang pertama adalah bit tanda, yang harus digunakan untuk menggunakan kode invers komplemen untuk mewakili angka negatif atau sesuatu. Ada 8 bit total untuk membentuk byte. Orang Amerika sedikit pelit saat itu. Jika mereka telah merancang byte yang 16 bit atau 32 bit dari awal, akan ada banyak masalah di dunia. Namun, pada saat itu, mereka mungkin berpikir bahwa 8 bit sudah cukup, yang dapat mewakili 128 karakter yang berbeda!
Karena komputer dibuat oleh orang Amerika, mereka menyimpan masalah sendiri dan menyandikan semua simbol yang mereka gunakan, yang membuat mereka sangat nyaman digunakan. Tetapi ketika komputer mulai berintegasionalisasi, masalahnya muncul. Ambil contoh Cina. Karakter Cina hanya puluhan ribu. Apa yang harus saya lakukan?
8 bit yang ada sistem byte adalah dasar, tidak dapat dihancurkan, tidak dapat dimodifikasi menjadi 16 bit atau sesuatu, jika tidak perubahan akan terlalu besar, sehingga Anda hanya dapat mengambil jalur lain: menggunakan beberapa karakter ASCII untuk mewakili karakter yang berbeda, yaitu, MBC (sistem karakter multi-byte, sistem karakter multi-byte).
Dengan konsep MBC ini, kita dapat mewakili lebih banyak karakter. Misalnya, jika kita menggunakan 2 karakter ASCII, ada 16 bit, dan secara teori ada 2 karakter untuk kekuatan 16 65.536 karakter. Tetapi bagaimana pengkodean ini ditetapkan untuk karakter? Misalnya, penyandian unicode "mulut" "mulut" adalah 21475. Siapa yang memutuskan? Set karakter, yang merupakan charset yang baru saja diperkenalkan. ASCII adalah set karakter paling mendasar. Di atas ini, kami memiliki set karakter yang mirip dengan GB2312 dan BIG5 untuk MBC dalam bahasa Cina yang disederhanakan dan tradisional Cina, dll. Akhirnya, ada sebuah institusi yang disebut Unicode Consortium, yang memutuskan untuk membuat set karakter (UCS, set karakter universal) termasuk semua karakter dan metode pengkodean yang sesuai, yaitu unicode. Sejak 1991, ia telah merilis edisi pertama Unicode International Standards, ISBN 0-321-18578-1, dan Organisasi Internasional untuk Standardisasi ISO juga telah berpartisipasi dalam kustomisasi ini, ISO/IEC 10646: Karakter Universal. Singkatnya, Unicode adalah standar karakter yang pada dasarnya mencakup semua simbol yang ada di bumi. Sekarang digunakan lebih dan lebih luas. Standar ECMA juga menetapkan bahwa karakter internal bahasa JavaScript menggunakan standar Unicode (ini berarti bahwa nama variabel JavaScript, nama fungsi, dll. Diizinkan dalam bahasa Cina!).
Untuk pengembang di Cina, mereka mungkin mengalami lebih banyak masalah seperti konversi antara GBK, GB2312, dan UTF-8. Sebenarnya, pernyataan ini tidak terlalu akurat. GBK dan GB2312 adalah set karakter (charset), sedangkan UTF-8 adalah metode pengkodean (pengkodean karakter), yang merupakan metode pengkodean karakter UCS dalam standar unicode. Karena halaman web menggunakan set karakter Unicode terutama dikodekan dengan UTF-8, orang sering menyatukannya, yang sebenarnya tidak akurat.
Dengan Unicode, setidaknya sebelum peradaban manusia bertemu alien, ini adalah kunci utama, jadi gunakan itu. Sekarang metode pengkodean unicode yang paling banyak digunakan adalah UTF-8 (format transformasi UCS/UNICODE 8-bit), yang memiliki beberapa hal yang sangat baik:
Pengkodean Karakter UCS, Universal Worldwide
Ini adalah metode pengkodean karakter panjang variabel, kompatibel dengan ASCII
Poin kedua adalah keuntungan besar, yang membuat sistem yang menggunakan encoding ASCII murni yang sebelumnya kompatibel, dan tidak menambahkan penyimpanan tambahan (dengan asumsi bahwa metode pengkodean panjang diatur, setiap karakter terdiri dari 2 byt, kemudian ruang penyimpanan yang ditempati oleh karakter ASCII akan digandakan pada saat ini).