Mengapa Anda membutuhkan pengkodean?
Unit penyimpanan terkecil di komputer adalah byte (byte), dan jumlah karakter yang dapat diwakili oleh byte terbatas, 1byte=8bit, satu byte hanya dapat mewakili paling banyak 255 karakter, dan ada banyak bahasa di dunia, ada berbagai karakter, yang tidak dapat diwakili oleh byte, sehingga karakter representasi char di Java adalah untuk mengatasi masalah pengkodean ini, satu char menempati dua byte, sehingga harus dikodekan antara char dan unit byte terkecil. Kebalikannya adalah decoding.
Faktanya, pengkodean dan decoding adalah proses terjemahan yang selesai ("terjemahan" mudah dipahami), dan berbagai metode pengkodean adalah kamus.
1. Kode ASCII
Nama lengkapnya adalah American Standard Code for Information Interchange, yang merupakan sistem pengkodean byte tunggal paling umum di dunia, terutama digunakan untuk menampilkan bahasa Inggris modern dan bahasa Eropa Barat lainnya.
Kode ASCII diwakili oleh 7 bit, yang hanya dapat mewakili 128 karakter, dan 0~31 mewakili karakter kontrol seperti enter, backspace, delete, dll.; 32~126 berarti karakter yang dicetak dapat dimasukkan melalui keyboard dan dapat ditampilkan.
Di antara mereka, 48 ~ 57 adalah 0 hingga 9 sepuluh angka Arab, 65 ~ 90 adalah 26 huruf besar bahasa Inggris, 97 ~ 122 adalah 26 huruf kecil dalam bahasa Inggris, dan sisanya adalah beberapa tanda baca, simbol operasi, dll., yang dapat merujuk ke tabel standar ASCII untuk detailnya.
2 、 ISO-8859-1
Pengodean ini adalah perpanjangan dari pengkodean ASCII, tetapi masih merupakan pengkodean byte tunggal dan hanya dapat mewakili total 256 karakter.
Karena ASCII hanya dapat mewakili 128 karakter, tampilan tidak dapat sepenuhnya diekspresikanISO-8859-1 memperluas pengkodean ASCIIDi atas kode ASCII, simbol teks yang sesuai dari bahasa Eropa Barat, Yunani, Thailand, Arab, dan Ibrani ditambahkan, dan kompatibel dengan pengkodean ASCII.
3 、 GB2312
Nama lengkap GB2312 adalah "Information Technology Chinese Encoding Character Set", yang merupakan pengkodean dua byte dengan rentang pengkodean A1-F7, di mana A1-A9 adalah area simbol, berisi total 682 simbol; B0-F7 adalah area kanji, berisi 6763 kanji.
Nama lengkapnya adalah set karakter Cina untuk pertukaran informasi, yang dirilis oleh China pada tahun 1980 dan terutama digunakan untuk pemrosesan karakter Cina dalam sistem komputer. GB2312 terutama berisi 6763 karakter Cina dan 682 simbol.
GB2312 mencakup sebagian besar penggunaan karakter Cina, tetapi tidak dapat menangani karakter langka khusus seperti Cina kuno, sehingga kode seperti GBK dan GB18030 muncul kemudian.
4 、 GBK
Nama lengkap GBK adalah "Spesifikasi Ekstensi Kode Internal Karakter Cina", yang tampaknya memperluas GB2312, rentang pengkodeannya adalah 8140-FEFE (hapus XX7F), dengan total 23940 bit kode, yang dapat mewakili 21003 karakter Cina, dan pengkodeannya kompatibel dengan GB2312
GBK, nama lengkap Spesifikasi Kode Internal Cina, dirumuskan pada tahun 1995. Ini terutama memperluas GB2312, dan menambahkan lebih banyak karakter Cina atas dasarnya, yang berisi total 21.003 karakter Cina.
GBK kompatibel dengan pengkodean GB2312, yang berarti bahwa karakter Cina yang dikodekan dalam GB2312 dapat didekodekan secara normal dengan GBK dan tidak akan tampak kacau, tetapi karakter Cina yang dikodekan dengan GBK tidak harus didekodekan dengan GB2312.
5、GB18030
GB18030 nama lengkapnya adalah Spesifikasi Ekstensi Kode Internal Karakter Cina, yang merupakan set karakter kode internal terbaru yang dirilis pada tahun 2000 dan diberlakukan pada tahun 2001, termasuk karakter bahasa sebagian besar etnis minoritas di Tiongkok, dan berisi lebih dari 70.000 karakter Tiongkok.
Ini terutama menggunakan pengkodean karakter byte tunggal, byte ganda, dan empat byte, dan kompatibel dengan GB2312 dan GBK, meskipun merupakan standar wajib di negara kita, tetapi jarang digunakan dalam produksi aktual, dan yang paling banyak digunakan adalah GBK dan GB2312.
6. UNICODE
Agar bahasa mereka ditampilkan secara normal di komputer, setiap negara dan wilayah memiliki kodenya sendiri, sehingga tidak ada yang mengetahui kode satu sama lain jika ada terlalu banyak kode, saat ini organisasi ISO mengusulkan kode baru yang disebut pengkodean UNICODE untuk mendukung budaya, karakter, dan simbol global. Ketika UNICODE dirumuskan, kapasitas komputer tidak lagi menjadi masalah, sehingga dirancang untuk diperbaiki dua byte, dan semua karakter diwakili dalam 16 bit, termasuk karakter bahasa Inggris yang sebelumnya hanya menempati 8 bit, sehingga akan menyebabkan pemborosan ruang, dan UNICODE tidak dipromosikan dan diterapkan untuk waktu yang lama.
7 、 UTF-16
Munculnya UTF-16 adalah ISO untuk membuat kamus supralingual baru, di mana semua bahasa di dunia dapat saling menerjemahkan, Anda dapat membayangkan betapa kompleks dan besarnya kamus ini. UTF-16 menggunakan dua byte untuk mewakili format konversi Unicode (dua byte adalah 16 bit, jadi UTF-16) adalah metode representasi panjang tetap, yaitu, karakter apa pun dapat direpresentasikan dalam dua byte. Ini membuatnya sangat nyaman untuk mewakili karakter. Namun, ada juga kekurangan, yaitu sebagian besar karakter dapat direpresentasikan dalam satu byte, tetapi UTF-16 menggunakan dua byte, yang membuang-buang ruang penyimpanan. Jadi ada cara lain untuk mengkode, yaitu UTF-8.
UTF-16 adalah implementasi spesifik dari UNICODE, 16 adalah 16 bit, UTF-16 adalah asalnya, mendefinisikan bagaimana karakter UNICODE disimpan di komputer, UTF-16 juga menggunakan dua byte untuk mewakili karakter apa pun, yang membuat string operasi sangat efisien, yang juga merupakan alasan penting mengapa java menggunakan UTF-16 sebagai format untuk menyimpan karakter dalam memori.
UTF-16 cocok untuk digunakan antara disk dan memori, dan konversi karakter dan byte ke dan dari satu sama lain akan lebih sederhana dan lebih efisien, tetapi tidak cocok untuk transmisi jaringan, yang dapat merusak aliran byte.
8 、 UTF-8
UTF-8 menggunakan teknologi panjang variabel di mana setiap wilayah pengkodean memiliki panjang kode yang berbeda, dan jenis karakter yang berbeda dapat terdiri dari 1-6 byte.
Aturan pengkodean untuk UTF-8 adalah sebagai berikut:
1) Jika 1 byte dan bit tertinggi adalah 0, itu berarti ini adalah 1 karakter ASCII. Dapat dilihat bahwa semua pengkodean ASCII sudah UTF-8
2) Jika 1 byte, dimulai dengan 11, jumlah 1 berturut-turut menyiratkan jumlah byte karakter ini, misalnya: 110xxxxx berarti itu adalah byte pertama dari karakter UTF-8 double-byte
3) Jika 1 byte, dimulai dengan 10, itu berarti itu bukan byte pertama, Anda perlu menantikan untuk mendapatkan byte pertama dari karakter saat ini.
Meskipun UTF-16 sangat efisien, itu juga merupakan kelemahan terbesar UNICODE, sehingga semua karakter byte tunggal harus menyumbang dua byte, dan ruang penyimpanan berlipat ganda, yang jelas menghabiskan sumber daya dan tidak sesuai dengan situasi perkembangan Internet yang pesat saat ini. Jadi dengan UTF-8, ini adalah implementasi pengkodean karakter panjang variabel UNICODE, yang dapat menggunakan 1 ~ 6 byte panjang tetap untuk mengkodekan karakter UNICODE.
UTF-8 menggunakan penyimpanan byte tunggal untuk karakter ASCII, dan jika satu karakter rusak, itu tidak akan memengaruhi karakter berikutnya, jadi UTF-8 ideal untuk tradisional di web dan merupakan salah satu pengkodean yang paling banyak digunakan saat ini.
Jika Anda ingin mewakili bahasa Cina, efisiensi pengkodean UTF-8 lebih besar dari GBK dan lebih kecil dari UTF-16, jadi ini juga merupakan metode pengkodean yang paling ideal selain GBK. |