Koleksi mempengaruhi penyortiran teks saja, tidak berpengaruh pada kumpulan karakter sebenarnya dari data yang disimpan.
Saya akan merekomendasikan konfigurasi ini:
-
Menyetel set karakter untuk seluruh DB saja, jadi Anda tidak perlu mengaturnya untuk setiap tabel secara terpisah. Kumpulan karakter diwarisi dari DB ke tabel ke kolom. Gunakan
utf8
sebagai set karakter. -
Mengatur set karakter untuk koneksi DB . Jalankan kueri ini setelah Anda terhubung ke database:
SET CHARACTER SET 'utf8' SET NAMES 'utf8'
-
Menyetel kumpulan karakter untuk halaman , menggunakan header HTTP dan/atau tag meta HTML. Salah satunya sudah cukup. Gunakan
utf-8
sebagaicharset
.
Ini sudah cukup.
Jika Anda ingin menyortir string Spanyol dengan benar, setel kolasi untuk seluruh basis data. utf8_spanish_ci
harus bekerja (ci
artinya Tidak Peka Huruf Besar-kecil ). Tanpa susunan yang tepat, karakter Spanyol beraksen akan diurutkan selalu terakhir.
Catatan :mungkin saja character set dari data yang sudah anda miliki dalam sebuah tabel rusak, karena character set anda konfigurasi yang salah sebelumnya. Anda harus memeriksanya menggunakan beberapa klien DB terlebih dahulu untuk mengecualikan kasus ini. Jika rusak, cukup masukkan kembali data Anda dengan konfigurasi set karakter yang tepat.
Bagaimana kumpulan karakter bekerja di database
-
objek memiliki kumpulan karakter atribut, yang dapat disetel secara eksplisit atau diwariskan (server> database> tabel> kolom), jadi opsi terbaik adalah menyetelnya untuk seluruh database
-
koneksi klien juga memiliki kumpulan karakter atribut dan itu memberi tahu database di mana pengkodean Anda mengirim data
Jika rangkaian karakter koneksi klien dan objek target berbeda, data yang Anda kirim ke database secara otomatis dikonversi dari rangkaian karakter koneksi ke rangkaian karakter objek.
Jadi jika Anda memiliki misalnya data di utf8
, tetapi koneksi klien setel ke latin1
, database akan memecah data, karena akan mencoba mengonversi utf8
seperti latin1
.