《MYSQL教程Mysql中的排序規(guī)則utf8_unicode_ci、utf8_general_ci的區(qū)別總結(jié)》要點:
本文介紹了MYSQL教程Mysql中的排序規(guī)則utf8_unicode_ci、utf8_general_ci的區(qū)別總結(jié),希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL實例用了這么長時間,發(fā)現(xiàn)自己竟然不知道utf_bin和utf_general_ci這兩者到底有什么區(qū)別..
ci是 case insensitive, 即 "大小寫不敏感", a 和 A 會在字符判斷中會被當(dāng)做一樣的;
bin 是二進(jìn)制, a 和 A 會別區(qū)別對待.
例如你運(yùn)行:
SELECT * FROM table WHERE txt = 'a'
那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 則可以.
utf8_general_ci 不區(qū)分大小寫,這個你在注冊用戶名和郵箱的時候就要使用.
utf8_general_cs 區(qū)分大小寫,如果用戶名和郵箱用這個 就會照成不良后果
utf8_bin:字符串每個字符串用二進(jìn)制數(shù)據(jù)編譯存儲. 區(qū)分大小寫,而且可以存二進(jìn)制的內(nèi)容
MYSQL實例一、官方文檔說明
下面摘錄一下Mysql 5.1中文手冊中關(guān)于utf8_unicode_ci與utf8_general_ci的說明:
MYSQL實例???? utf8_unicode_ci的最主要的特色是支持?jǐn)U展,即當(dāng)把一個字母看作與其它字母組合相等時.例如,在德語和一些其它語言中‘?'等于‘ss'.
MYSQL實例???? utf8_general_ci是一個遺留的 校對規(guī)則,不支持?jǐn)U展.它僅能夠在字符之間進(jìn)行逐個比較.這意味著utf8_general_ci校對規(guī)則進(jìn)行的比較速度很快,但是與使用utf8_unicode_ci的 校對規(guī)則相比,比較正確性較差).
MYSQL實例???? 例如,使用utf8_general_ci和utf8_unicode_ci兩種 校對規(guī)則下面的比較相等:
???? ? = A
???? ? = O
???? ü = U
MYSQL實例???? 兩種校對規(guī)則之間的區(qū)別是,對于utf8_general_ci下面的等式成立:
???? ? = s
MYSQL實例???? 但是,對于utf8_unicode_ci下面等式成立:
???? ? = ss
MYSQL實例???? 對于一種語言僅當(dāng)使用utf8_unicode_ci排序做的不好時,才執(zhí)行與具體語言相關(guān)的utf8字符集 校對規(guī)則.例如,對于德語和法語,utf8_unicode_ci工作的很好,因此不再需要為這兩種語言創(chuàng)建特殊的utf8校對規(guī)則.
MYSQL實例???? utf8_general_ci也適用與德語和法語,除了‘?'等于‘s',而不是‘ss'之外.如果你的應(yīng)用能夠接受這些,那么應(yīng)該使用utf8_general_ci,因為它速度快.否則,使用utf8_unicode_ci,因為它比較準(zhǔn)確.
MYSQL實例二、簡短總結(jié)
utf8_unicode_ci和utf8_general_ci對中、英文來說沒有實質(zhì)的差別.
utf8_general_ci校對速度快,但準(zhǔn)確度稍差.
utf8_unicode_ci準(zhǔn)確度高,但校對速度稍慢.
MYSQL實例如果你的應(yīng)用有德語、法語或者俄語,請一定使用utf8_unicode_ci.一般用utf8_general_ci就夠了,到現(xiàn)在也沒發(fā)現(xiàn)問題...
MYSQL實例三、詳細(xì)總結(jié)
MYSQL實例1、對于一種語言僅當(dāng)使用utf8_unicode_ci排序做的不好時,才執(zhí)行與具體語言相關(guān)的utf8字符集校對規(guī)則.例如,對于德語和法語,utf8_unicode_ci工作的很好,因此不再需要為這兩種語言創(chuàng)建特殊的utf8校對規(guī)則.
2、utf8_general_ci也適用與德語和法語,除了‘?'等于‘s',而不是‘ss'之外.如果你的應(yīng)用能夠接受這些,那么應(yīng)該使用 utf8_general_ci,因為它速度快.否則,使用utf8_unicode_ci,因為它比較準(zhǔn)確.
MYSQL實例用一句話概況上面這段話:utf8_unicode_ci比較準(zhǔn)確,utf8_general_ci速度比較快.通常情況下 utf8_general_ci的準(zhǔn)確性就夠我們用的了,在我看過很多程序源碼后,發(fā)現(xiàn)它們大多數(shù)也用的是utf8_general_ci,所以新建數(shù)據(jù) 庫時一般選用utf8_general_ci就可以了
MYSQL實例四、如何在MySQL5.0中使用UTF8
在 my.cnf中增加下列參數(shù)
MYSQL實例執(zhí)行查詢 mysql> show variables; 相關(guān)如下:
MYSQL實例collation_connection | utf8_general_ci
collation_database | utf8_general_ci
collation_server | utf8_general_ci
MYSQL實例個人見解,對于數(shù)據(jù)庫的使用,utf8 - general 已經(jīng)足夠的準(zhǔn)確,并且相較與? utf8 - unicode速度上有優(yōu)勢,固可放心采用之
MYSQL實例
附1:舊數(shù)據(jù)升級辦法
以原來的字符集為latin1為例,升級成為utf8的字符集.原來的表: old_table (default charset=latin1),新表:new_table(default charset=utf8).
第一步:導(dǎo)出舊數(shù)據(jù)
MYSQL實例附2:支持查看utf8字符集的MySQL客戶端有
1.) MySQL-Front,據(jù)說這個項目已經(jīng)被MySQL AB勒令停止了,不知為何,如果國內(nèi)還有不少破解版可以下載(不代表我推薦使用破解版 :-P).
2.) Navicat,另一款非常不錯的MySQL客戶端,漢化版剛出來,還邀請我試用過,總的來說還是不錯的,不過也需要付費.
3.) PhpMyAdmin,開源的php項目,非常好.
4.) Linux下的終端工具(Linux terminal),把終端的字符集設(shè)置為utf8,連接到MySQL之后,執(zhí)行 SET NAMES UTF8; 也能讀寫utf8數(shù)據(jù)了.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/3396.html