Mysql中校對(duì)集utf8_unicode_ci與utf8_general_ci的區(qū)別說明
2018-03-13 22:01:58
15231
當(dāng)前,utf8_unicode_ci校對(duì)規(guī)則僅部分支持Unicode校對(duì)規(guī)則算法。一些字符還是不能支持。并且,不能完全支持組合的記號(hào)。這主要影響越南和俄羅斯的一些少數(shù)民族語言,如:Udmurt 、Tatar、Bashkir和Mari。
utf8_unicode_ci的最主要的特色是支持?jǐn)U展,即當(dāng)把一個(gè)字母看作與其它字母組合相等時(shí)。例如,在德語和一些其它語言中‘?'等于‘ss'。
utf8_general_ci是一個(gè)遺留的 校對(duì)規(guī)則,不支持?jǐn)U展。它僅能夠在字符之間進(jìn)行逐個(gè)比較。這意味著utf8_general_ci校對(duì)規(guī)則進(jìn)行的比較速度很快,但是與使用utf8_unicode_ci的 校對(duì)規(guī)則相比,比較正確性較差)。
例如,使用utf8_general_ci和utf8_unicode_ci兩種 校對(duì)規(guī)則下面的比較相等:
? = A
? = O
ü = U
兩種校對(duì)規(guī)則之間的區(qū)別是,對(duì)于utf8_general_ci下面的等式成立:
? = s
但是,對(duì)于utf8_unicode_ci下面等式成立:
? = ss
對(duì)于一種語言僅當(dāng)使用utf8_unicode_ci排序做的不好時(shí),才執(zhí)行與具體語言相關(guān)的utf8字符集 校對(duì)規(guī)則。例如,對(duì)于德語和法語,utf8_unicode_ci工作的很好,因此不再需要為這兩種語言創(chuàng)建特殊的utf8校對(duì)規(guī)則。
utf8_general_ci也適用與德語和法語,除了‘?'等于‘s',而不是‘ss'之外。如果你的應(yīng)用能夠接受這些,那么應(yīng)該使用utf8_general_ci,因?yàn)樗俣瓤臁7駝t,使用utf8_unicode_ci,因?yàn)樗容^準(zhǔn)確。