架构师_程序员_码农网

E Ambil kata sandi
Daftar

QQ登录

Hanya satu langkah untuk memulai

Cari
Tampilan:15611|Balas: 0
打印 上一主题 下一主题

[Informasi]perbedaan utf8 dan utf8mb4 dalam mysql

[tautan salin]
A 跳转到指定楼层
pemilik gedung
发表于 2021-4-21 18:01:22|只看该作者回帖奖励|MembalikkanPenjelajahan|Mode Baca
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 digunakan
Artikel Berikutnya: Header permintaan HTTP Mengharapkan Detail
Jaringan petani kode, hanya dipublikasikan dalam proses praktik, mengalami kesulitan teknis, jangan menyesatkan orang lain.
Anda harus masuk sebelum dapat memposting kembali Masuk | Daftar

V ersi aturan integral iniB


PENAFIAN: Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer hanya digunakan untuk tujuan pembelajaran dan penelitian; konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, semua konsekuensinya menjadi tanggung jawab pengguna. Informasi situs ini dari jaringan, sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus menghapus konten di atas sepenuhnya dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, mohon dukung perangkat lunak asli, beli registrasi dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email untuk menanganinya.

Mail To:help@itsvse.com

QQ | ( 鲁ICP备14021824号-2)|Peta Situs

GMT+8, 2024-9-19 01:11

Balas CepatKembali ke atasKembali ke daftar