- sepatu jordan untuk dijual
- 16373
|
Set karakter tidak dikenal: utf8mb4 h ttps:// www.itsvse.com/thread-3199-1-1.html I. Pendahuluan
MySQL menambahkan pengkodean utf8mb4 ini setelah 5.5.3. mb4 berarti sebagian besar byte 4, yang didesain secara khusus agar kompatibel dengan unicode empat byte. utf8mb4 adalah superset dari utf8, sehingga Anda tidak perlu melakukan konversi lain selain mengubah pengkodean ke utf8mb4. Tentu saja, untuk menghemat ruang, penggunaan utf8 secara umum sudah cukup.
Kedua, deskripsi konten
Konon, karena utf8 dapat menyimpan sebagian besar karakter Cina, lalu mengapa menggunakan utf8mb4? MySQL asli mendukung utf8 encoding dengan panjang karakter maksimum 3 byte, jika ditemukan karakter selebar 4 byte akan dimasukkan ke dalam pengecualian. Karakter Unicode maksimum yang dapat dikodekan oleh UTF-8 tiga byte adalah 0xffff, yang merupakan Basic Multi-text Plane (BMP) dalam Unicode. Artinya, karakter Unicode apa pun yang tidak ada dalam Bidang Multi-teks Dasar tidak dapat disimpan menggunakan rangkaian karakter utf8 Mysql. Ini termasuk emoji Emoji (Emoji adalah pengkodean Unicode khusus yang biasa ditemukan di ponsel iOS dan Android), dan banyak karakter Cina yang jarang digunakan, serta karakter Unicode baru yang ditambahkan, dan seterusnya.
Akar Masalahnya
Format UTF-8 yang asli menggunakan satu hingga enam byte dan dapat menyandikan hingga 31-bit karakter. Spesifikasi UTF-8 terbaru hanya menggunakan satu hingga empat byte dan menyandikan maksimum 21 bit, yang cukup untuk mewakili semua 17 bidang Unicode. utf8 adalah kumpulan karakter di Mysql yang hanya mendukung karakter UTF-8 hingga maksimum tiga byte, yang merupakan bidang multiteks dasar dalam Unicode.
Mengapa utf8 di Mysql hanya mendukung karakter UTF-8 dengan panjang maksimal tiga byte? Saya telah memikirkan hal ini cukup lama, tetapi mungkin karena ketika Mysql pertama kali dikembangkan, Unicode tidak memiliki pesawat pembantu. Pada saat itu, komite Unicode masih bermimpi tentang "65535 karakter sudah cukup untuk seluruh dunia", panjang string di Mysql dihitung sebagai jumlah karakter, bukan jumlah byte, dan untuk tipe data CHAR, perlu mencadangkan panjang yang cukup untuk string tersebut. Saat menggunakan set karakter utf8, panjang yang akan dicadangkan adalah panjang karakter utf8 terpanjang dikalikan dengan panjang string, jadi masuk akal untuk membatasi panjang maksimum utf8 menjadi 3, misalnya, untuk CHAR (100), Mysql akan mencadangkan 300 byte. Mengenai mengapa versi berikutnya tidak mendukung karakter UTF-8 4-byte, saya pikir ini adalah masalah kompatibilitas ke belakang dan fakta bahwa karakter di luar bidang multibahasa dasar jarang digunakan.
Untuk menyimpan karakter UTF-8 4-byte di Mysql, Anda perlu menggunakan rangkaian karakter utf8mb4, yang hanya didukung mulai versi 5.5.3 dan seterusnya (lihat versi: pilih version();). Menurut saya, untuk mendapatkan kompatibilitas yang lebih baik, Anda harus selalu menggunakan utf8mb4, bukan utf8. Untuk data bertipe CHAR, utf8mb4 akan menghabiskan lebih banyak ruang, sesuai dengan rekomendasi resmi Mysql, gunakanlah VARCHAR, bukan CHAR.
|
Sebelumnya: Kerangka kerja ORM SqlSugar mudah digunakanArtikel Berikutnya: Header permintaan HTTP Mengharapkan Detail
|