Apa itu Unicode, apa itu UTF-8

WBOY
Lepaskan: 2018-09-28 10:24:51
asal
2626 orang telah melayarinya

Saya tidak pernah terlalu menuntut dalam pengekodan, jadi saya tidak tahu banyak tentang Unicode dan UTF-8. Baru-baru ini, saya secara tidak sengaja membaca artikel tentang UTF-8, dan saya merasakan penjelasannya sangat rumit, jadi saya terfikir untuk menulis artikel yang lebih ringkas dan mudah difahami.

Pertama sekali, mari kita terangkan beberapa skim pengekodan yang biasa digunakan hari ini:

1 Di China, pengekodan yang paling biasa digunakan di tanah besar China ialah GBK18030, in Selain GBK dan GB2312 , hubungan antara kod ini adalah seperti berikut:

Pengekodan aksara Cina terawal ialah GB2312, termasuk 6763 aksara Cina dan 682 simbol lain telah disemak pada tahun 1995, dinamakan GBK1.0, dan sejumlah 21886 simbol. Kemudian, pengekodan GBK18030 telah dilancarkan, yang merangkumi sejumlah 27,484 aksara Cina, serta bahasa Tibet, Mongolia, Uyghur dan bahasa etnik minoriti utama yang lain Kini platform WINDOWS mesti menyokong pengekodan GBK18030.

Mengikut tertib GBK18030, GBK dan GB2312, ketiga-tiga pengekodan adalah serasi ke belakang. Aksara Cina yang sama mempunyai pengekodan yang sama dalam tiga skema pengekodan.

2. Taiwan, Hong Kong dan tempat lain menggunakan pengekodan BIG5

3 Jepun: pengekodan SJIS

Jika pelbagai pengekodan teks diterangkan sebagai dialek pelbagai tempat, maka Unicode. Ia adalah bahasa yang dibangunkan bersama oleh negara-negara di seluruh dunia.

Dalam persekitaran bahasa ini, tiada lagi percanggahan pengekodan bahasa Kandungan dalam mana-mana bahasa boleh dipaparkan pada skrin yang sama. Ini adalah faedah terbesar Unicode.

Jadi bagaimana Unicode dikodkan? Malah, ia sangat mudah:

ialah untuk mengekod semua teks di dunia menggunakan 2 bait. Anda mungkin bertanya, 2 bait boleh mewakili sehingga 65536 kod, adakah ia mencukupi?

Kebanyakan aksara Cina di Korea dan Jepun dihantar dari China, dan fonnya betul-betul sama. Contohnya: perkataan "文" ialah aksara Cina yang sama dalam GBK dan SJIS, tetapi pengekodan adalah berbeza. Dengan cara itu, dengan pengekodan bersatu seperti ini, 2 bait sudah cukup untuk menampung kebanyakan teks dalam semua bahasa di dunia.

Nama saintifik Unicode ialah "Universal Multiple-Octet Coded Character Set", dirujuk sebagai UCS.
Apa yang digunakan pada masa ini ialah UCS-2, iaitu pengekodan 2-bait, dan UCS-4 telah dibangunkan untuk mengelakkan 2 bait daripada tidak mencukupi pada masa hadapan. UCS-2 juga dipanggil Asas Berbilang Bahasa.
Menukar UCS-2 kepada UCS-4 hanyalah menambah 2 bait 0 di hadapan.
UCS-4 digunakan terutamanya untuk menyelamatkan pesawat tambahan, seperti pesawat tambahan kedua dalam Unicode 4.0
20000-20FFF - 21000-21FFF - 22000-22FFF - 23000-23FFF0 - 2400F - 2400F - 2400F - 2400F 26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF
Sebanyak 16 pesawat tambahan telah ditambah, berkembang hampir kepada 5536 kod asal.

Jadi sekarang pengekodan telah disatukan, bagaimanakah ia boleh serasi dengan pengekodan teks asal pelbagai negara?

Pada masa ini halaman kod diperlukan.

Apakah halaman kod? Codepage ialah jadual pemetaan antara pengekodan teks setiap negara dan Unicode. Sebagai contoh, jadual pemetaan antara Bahasa Cina Ringkas dan Unicode ialah CP936.

Berikut ialah beberapa halaman kod yang biasa digunakan Cuma ubah suai nombor alamat di atas dengan sewajarnya:

codepage=936 GBK Cina Ringkas
codepage=950 Cina Tradisional BIG5
codepage =. 437 Amerika Syarikat/Kanada Inggeris
codepage=932 Jepun
codepage=949 Korea
codepage=866 Rusia
codepage=65001 unicode UFT-8

Yang terakhir ialah 65001, mengikut kepada peribadi Faham, ia sepatutnya hanya jadual pemetaan maya, tetapi ia sebenarnya hanyalah algoritma.

Ambil baris rawak daripada 936, sebagai contoh:

0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH
Pengekodan sebelumnya ialah pengekodan GBK, dan yang berikut ialah Unicode.
Dengan menyemak jadual ini, anda boleh menukar antara GBK dan Unicode dengan mudah.

Sekarang kita faham Unicode, apakah itu UTF-8? Dan mengapakah UTF-8 muncul?

Tukar ASCII kepada UCS-2, hanya masukkan 0x0 sebelum pengekodan. Menggunakan pengekodan ini akan menyertakan beberapa aksara kawalan, seperti atau /, yang akan menyebabkan ralat serius dalam UNIX dan beberapa fungsi C. Oleh itu, sudah pasti UCS-2 tidak sesuai sebagai pengekodan luaran untuk Unicode.

Oleh itu, UTF-8 dilahirkan. Jadi bagaimanakah UTF-8 dikodkan? Bagaimana untuk menyelesaikan masalah UCS-2?

Contoh:

E4 BD A0  11100100 10111101 10100000
Ini ialah pengekodan UTF-8 bagi perkataan "anda"

10 > Ini ialah " Pengekodan Unikod "anda"

diuraikan mengikut peraturan pengekodan UTF-8 seperti berikut: xxxx0100 xx111101 xx100000
Sambung nombor kecuali x bersama untuk menjadi pengekodan Unikod "anda ".
Beri perhatian kepada tiga 1 pertama UTF-8, menunjukkan bahawa keseluruhan rentetan UTF-8 terdiri daripada 3 bait.
Selepas pengekodan UTF-8, aksara sensitif tidak akan muncul lagi kerana bit tertinggi sentiasa 1.

Berikut ialah jadual perhubungan penukaran antara Unicode dan UTF-8:
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxx 00000000000 -0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-001FFFFF1: 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Tukar pengekodan Unikod kepada UTF-8 Hanya letakkan strim bait Unicode ke dalam x dan ia akan menjadi UTF-8.


Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!