utf8_general_ci
adalah susunan yang sangat sederhana — dan pada Unicode, sangat rusak —, yang memberikan hasil yang salah pada teks Unicode umum. Fungsinya adalah:
- mengonversi ke bentuk D normalisasi Unicode untuk dekomposisi kanonik
- menghapus semua karakter gabungan
- mengubah menjadi huruf besar
Ini tidak berfungsi dengan benar di Unicode, karena tidak memahami casing Unicode. Casing unicode saja jauh lebih rumit daripada yang dapat ditangani oleh pendekatan yang berpikiran ASCII. Misalnya:
- Huruf kecil dari “ẞ” adalah “ß”, tetapi huruf besar dari “ß” adalah “SS”.
- Ada dua sigma Yunani huruf kecil, tapi hanya satu huruf besar satu; pertimbangkan “Σίσυφος”.
- Huruf seperti “ø” tidak terurai menjadi “o” ditambah diakritik, artinya tidak akan diurutkan dengan benar.
Ada banyak seluk-beluk lainnya.
utf8_unicode_ci
menggunakan Algoritma Pengumpulan Unicode standar , mendukung apa yang disebut ekspansi dan ligatur, misalnya:Huruf Jerman (U+00DF LETTER SHARP S) diurutkan mendekati "ss"Huruf (U+0152 LATIN CAPITAL LIGATURE OE) diurutkan mendekati "OE".
utf8_general_ci
tidak mendukung ekspansi/ligatur, ini mengurutkan semua huruf ini sebagai karakter tunggal, dan terkadang dalam urutan yang salah.
utf8_unicode_ci
adalah umumnya lebih akurat untuk semua skrip. Misalnya, pada blok Cyrillic:utf8_unicode_ci
baik untuk semua bahasa ini:Rusia, Bulgaria, Belarusia, Makedonia, Serbia, dan Ukraina. Sementara utf8_general_ci baik-baik saja hanya untuk subset Cyrillic Rusia dan Bulgaria. Huruf tambahan yang digunakan dalam bahasa Belarusia, Makedonia, Serbia, dan Ukraina diurutkan tidak dengan baik.
Biaya utf8_unicode_ci
apakah itu sedikit bit lebih lambat dari utf8_general_ci
. Tapi itulah harga yang Anda bayar untuk kebenaran. Entah Anda dapat memiliki jawaban cepat yang salah, atau jawaban yang sedikit lebih lambat yang benar. Pilihan Anda. Sangat sulit untuk membenarkan memberikan jawaban yang salah, jadi sebaiknya asumsikan bahwa utf8_general_ci
tidak ada dan selalu menggunakan utf8_unicode_ci
. Yah, kecuali jika Anda menginginkan jawaban yang salah.
Sumber:http://forums.mysql.com/read .php?103,187048,188748#msg-188748