手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

幫助中心 >  技術知識庫 >  數據庫 >  數據庫管理 >  utf8_general_ci和utf8_unicode_ci的區別

utf8_general_ci和utf8_unicode_ci的區別

2016-05-23 09:55:04 14489

關于utf8_unicode_ci與utf8_general_ci這2個校對集,這里區別一下。

Mysql 5.1中文手冊中關于utf8_unicode_ci與utf8_general_ci的說明:

當前,utf8_unicode_ci校對規則僅部分支持Unicode校對規則算法。一些字符還是不能支持。并且,不能完全支持組合的記號。這主要影響越南和俄羅斯的一些少數民族語言,如:Udmurt 、Tatar、Bashkir和Mari。

utf8_unicode_ci的最主要的特色是支持擴展,即當把一個字母看作與其它字母組合相等時。?如,在德語和一些其它語言中‘?’等于‘ss’。

utf8_general_ci是一個遺留的 校對規則,不支持擴展。它僅能夠在字符之間進行逐個比較。這意味著utf8_general_ci校對規則進行的比較速度很快,但是與使用utf8_unicode_ci的 校對規則相比,比較正確性較差)。

例如,使用utf8_general_ci和utf8_unicode_ci兩種 校對規則下面的比較相等:

1? = A
2? = O
3? = U

兩種校對規則之間的區別是,對于utf8_general_ci下面的等式成立:

1? = s

但是,對于utf8_unicode_ci下面等式成立:

1? = ss

對于一種語言僅當使用utf8_unicode_ci排序做的不好時,才執行與具體語言相關的utf8字符集 校對規則。例如,對于德語和法語,utf8_unicode_ci工作的很好,因此不再需要為這兩種語言創建特殊的utf8校對規則。

utf8_general_ci也適用與德語和法語,除了‘?’等于‘s’,而不是‘ss’之外。如果你的應用能夠接受這些,那?應該使用utf8_general_ci,因為它速度快。否則,使用utf8_unicode_ci,因為它比較準確。

如果你想使用gb2312編碼,那么建議你使用latin1作為數據表的默認字符集,這樣就能直接用中文在命令行工具中插入數據,并且可以直接顯示出來。而不要使用gb2312或者gbk等字符集,如果擔心查詢排序等問題,可以使用binary屬性約束,例如:

1create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;

用一句話概況上面這段話:utf8_unicode_ci比較準確,utf8_general_ci速?比較快。通常情況下 utf8_general_ci的準確性就夠我們用的了,在我看過很多程序源碼后,發現它們大多數也用的是utf8_general_ci,所以新建數據 庫時一般選用utf8_general_ci就可以了。


提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: