標籤:style http color os ar 使用 sp 資料 on
前言:在建立資料庫的時候,會有這樣一個選項->定序,平時在建立資料庫的時候並沒有注意,只是選擇了預設,也沒感覺有什麼問題,今天看到這個突然好奇起來,所以看了一些資料做了以下的一些總結,若有錯誤之處請斧正。
這個定序的作用是什嗎?可以避免一些在資料庫匯入時出現的一些錯誤。很多時候在匯入資料庫的時候會出現字元亂碼的問題,但是如果定製編碼的話,就會更容易的發現問題。在mysql中我們經常使用的是utf8_unicode_ci和utf8_general_ci,兩者還是有一些區別的,當前,utf8_unicode_ci校對規則僅部分支援Unicode校對規則演算法。一些字元還是不能支援。並且,不能完全支援組合的記號。這主要影響越南和俄羅斯的一些少數民族語言,如:Udmurt 、Tatar、Bashkir和Mari。
utf8_general_ci是一個遺留的 校對規則,不支援擴充。它僅能夠在字元之間進行逐個比較。這意味著utf8_general_ci校對規則進行的比較速度很快,但是與使用utf8_unicode_ci的 校對規則相比,比較正確性較差)。
例如,使用utf8_general_ci和utf8_unicode_ci兩種 校對規則下面的比較相等: Ä = A Ö = O Ü = U 兩種校對規則之間的區別是,對於utf8_general_ci下面的等式成立: ß = s 但是,對於utf8_unicode_ci下面等式成立: ß = ss 對於一種語言僅當使用utf8_unicode_ci排序做的不好時,才執行與具體語言相關的utf8字元集 校對規則。例如,對於德 語和法語,utf8_unicode_ci工作的很好,因此不再需要為這兩種語言建立特殊的utf8校對規則。 utf8_general_ci也適用與德語和法語,除了‘ß‘等於‘s‘,而不是‘ss‘之外。 如果你的應用能夠接受這些,那麼應該使用utf8_general_ci,因為它速度快。否則,使用utf8_unicode_ci,因為它比較準確。
上面我們講到utf8_xxxx_ci,但是對於上面的編碼格式後面的ci還是有些不解,當然不只是ci,還有ki,wi什麼的,他們代表的是什麼尼?
定序名稱由兩部份構成,前半部份是指本定序所支援的字元集
如:
Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字元集,Chinese_PRC_指標對大陸簡體字UNICODE的定序
定序的後半部份即尾碼 含義:
_BIN 二進位排序
_CI(CS) 是否區分大小寫,CI不區分,CS區分
_AI(AS) 是否區分重音,AI不區分,AS區分
_KI(KS) 是否區分假名類型,KI不區分,KS區分
_WI(WS) 是否區分寬度 WI不區分,WS
現在對定序有一定的瞭解之後就明白自己需要那種編碼格式了,平時我都是使用utf8_general_ci,最好是做到編碼統一,就會減少資料庫亂碼這種情況的發生。。。
文章部分內容參考了http://www.jb51.net/article/48775.htm
MySQL資料庫排序選擇的作用和該如何選擇編碼格式