- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
關(guān)于utf8_unicode_ci與utf8_general_ci這2個校對集,這里區(qū)別一下。
Mysql 5.1中文手冊中關(guān)于utf8_unicode_ci與utf8_general_ci的說明:
當(dāng)前,utf8_unicode_ci校對規(guī)則僅部分支持Unicode校對規(guī)則算法。一些字符還是不能支持。并且,不能完全支持組合的記號。這主要影響越南和俄羅斯的一些少數(shù)民族語言,如:Udmurt 、Tatar、Bashkir和Mari。
utf8_unicode_ci的最主要的特色是支持?jǐn)U展,即當(dāng)把一個字母看作與其它字母組合相等時。?如,在德語和一些其它語言中‘?’等于‘ss’。
utf8_general_ci是一個遺留的 校對規(guī)則,不支持?jǐn)U展。它僅能夠在字符之間進(jìn)行逐個比較。這意味著utf8_general_ci校對規(guī)則進(jìn)行的比較速度很快,但是與使用utf8_unicode_ci的 校對規(guī)則相比,比較正確性較差)。
例如,使用utf8_general_ci和utf8_unicode_ci兩種 校對規(guī)則下面的比較相等:
1 | ? = A |
2 | ? = O |
3 | ? = U |
兩種校對規(guī)則之間的區(qū)別是,對于utf8_general_ci下面的等式成立:
1 | ? = s |
但是,對于utf8_unicode_ci下面等式成立:
1 | ? = ss |
對于一種語言僅當(dāng)使用utf8_unicode_ci排序做的不好時,才執(zhí)行與具體語言相關(guān)的utf8字符集 校對規(guī)則。例如,對于德語和法語,utf8_unicode_ci工作的很好,因此不再需要為這兩種語言創(chuàng)建特殊的utf8校對規(guī)則。
utf8_general_ci也適用與德語和法語,除了‘?’等于‘s’,而不是‘ss’之外。如果你的應(yīng)用能夠接受這些,那?應(yīng)該使用utf8_general_ci,因為它速度快。否則,使用utf8_unicode_ci,因為它比較準(zhǔn)確。
如果你想使用gb2312編碼,那么建議你使用latin1作為數(shù)據(jù)表的默認(rèn)字符集,這樣就能直接用中文在命令行工具中插入數(shù)據(jù),并且可以直接顯示出來。而不要使用gb2312或者gbk等字符集,如果擔(dān)心查詢排序等問題,可以使用binary屬性約束,例如:
1 | create table my_table ( name varchar (20) binary not null default '' )type=myisam default charset latin1; |
用一句話概況上面這段話: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就可以了。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP