gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

帶你搞懂MySQL字符集和比較規則

本篇文章給大家帶來了關于mysql中字符集比較的相關知識,其中包括了MySQL中支持的字符集和排序規則,希望對大家有幫助。

帶你搞懂MySQL字符集和比較規則

字符集和比較規則簡介

字符集簡介

我們知道在計算機中只能存儲二進制數據,那該怎么存儲字符串呢?當然是建立字符與二進制數據的映射關系了,建立這個關系最起碼要搞清楚兩件事兒:

  1. 你要把哪些字符映射成二進制數據?

    也就是界定清楚字符范圍。

  2. 怎么映射?

    將一個字符映射成一個二進制數據的過程也叫做編碼,將一個二進制數據映射到一個字符的過程叫做解碼

人們抽象出一個字符集的概念來描述某個字符范圍的編碼規則。比方說我們來自定義一個名稱為xiaohaizi的字符集,它包含的字符范圍和編碼規則如下:

  • 包含字符'a''b''A''B'

  • 編碼規則如下:

    采用1個字節編碼一個字符的形式,字符和字節的映射關系如下:

    'a' -> 00000001 (十六進制:0x01) 'b' -> 00000010 (十六進制:0x02) 'A' -> 00000011 (十六進制:0x03) 'B' -> 00000100 (十六進制:0x04)

有了xiaohaizi字符集,我們就可以用二進制形式表示一些字符串了,下邊是一些字符串用xiaohaizi字符集編碼后的二進制表示:

'bA' -> 0000001000000011  (十六進制:0x0203) 'baB' -> 000000100000000100000100  (十六進制:0x020104) 'cd' -> 無法表示,字符集xiaohaizi不包含字符'c'和'd'

比較規則簡介

在我們確定了xiaohaizi字符集表示字符的范圍以及編碼規則后,怎么比較兩個字符的大小呢?最容易想到的就是直接比較這兩個字符對應的二進制編碼的大小,比方說字符'a'的編碼為0x01,字符'b'的編碼為0x02,所以'a'小于'b',這種簡單的比較規則也可以被稱為二進制比較規則,英文名為binary collation

二進制比較規則是簡單,但有時候并不符合現實需求,比如在很多場合對于英文字符我們都是不區分大小寫的,也就是說'a''A'是相等的,在這種場合下就不能簡單粗暴的使用二進制比較規則了,這時候我們可以這樣指定比較規則:

  1. 將兩個大小寫不同的字符全都轉為大寫或者小寫。
  2. 再比較這兩個字符對應的二進制數據。

這是一種稍微復雜一點點的比較規則,但是實際生活中的字符不止英文字符一種,比如我們的漢字有幾萬之多,對于某一種字符集來說,比較兩個字符大小的規則可以制定出很多種,也就是說同一種字符集可以有多種比較規則,我們稍后就要介紹各種現實生活中用的字符集以及它們的一些比較規則。

一些重要的字符集

不幸的是,這個世界太大了,不同的人制定出了好多種字符集,它們表示的字符范圍和用到的編碼規則可能都不一樣。我們看一下一些常用字符集的情況:

  • ASCII字符集

    共收錄128個字符,包括空格、標點符號、數字、大小寫字母和一些不可見字符。由于總共才128個字符,所以可以使用1個字節來進行編碼,我們看一些字符的編碼方式:

    'L' ->  01001100(十六進制:0x4C,十進制:76) 'M' ->  01001101(十六進制:0x4D,十進制:77)
  • ISO 8859-1字符集

    共收錄256個字符,是在ASCII字符集的基礎上又擴充了128個西歐常用字符(包括德法兩國的字母),也可以使用1個字節來進行編碼。這個字符集也有一個別名latin1

  • GB2312字符集

    收錄了漢字以及拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母。其中收錄漢字6763個,其他文字符號682個。同時這種字符集又兼容ASCII字符集,所以在編碼方式上顯得有些奇怪:

    • 如果該字符在ASCII字符集中,則采用1字節編碼。
    • 否則采用2字節編碼。

    這種表示一個字符需要的字節數可能不同的編碼方式稱為變長編碼方式。比方說字符串'愛u',其中'愛'需要用2個字節進行編碼,編碼后的十六進制表示為0xB0AE'u'需要用1個字節進行編碼,編碼后的十六進制表示為0x75,所以拼合起來就是0xB0AE75

    小貼士:  我們怎么區分某個字節代表一個單獨的字符還是代表某個字符的一部分呢?別忘了`ASCII`字符集只收錄128個字符,使用0~127就可以表示全部字符,所以如果某個字節是在0~127之內的,就意味著一個字節代表一個單獨的字符,否則就是兩個字節代表一個單獨的字符。
  • GBK字符集

    GBK字符集只是在收錄字符范圍上對GB2312字符集作了擴充,編碼方式上兼容GB2312

  • utf8字符集

    收錄地球上能想到的所有字符,而且還在不斷擴充。這種字符集兼容ASCII字符集,采用變長編碼方式,編碼一個字符需要使用1~4個字節,比方說這樣:

    'L' ->  01001100(十六進制:0x4C) '啊' ->  111001011001010110001010(十六進制:0xE5958A)
    小貼士:  其實準確的說,utf8只是Unicode字符集的一種編碼方案,Unicode字符集可以采用utf8、utf16、utf32這幾種編碼方案,utf8使用1~4個字節編碼一個字符,utf16使用2個或4個字節編碼一個字符,utf32使用4個字節編碼一個字符。更詳細的Unicode和其編碼方案的知識不是本書的重點,大家上網查查哈~  MySQL中并不區分字符集和編碼方案的概念,所以后邊嘮叨的時候把utf8、utf16、utf32都當作一種字符集對待。

對于同一個字符,不同字符集也可能有不同的編碼方式。比如對于漢字'我'來說,ASCII字符集中根本沒有收錄這個字符,utf8gb2312字符集對漢字的編碼方式如下:

utf8編碼:111001101000100010010001 (3個字節,十六進制表示是:0xE68891) gb2312編碼:1011000010101110 (2個字節,十六進制表示是:0xB0AE)

MySQL中支持的字符集和排序規則

MySQL中的utf8和utf8mb4

我們上邊說utf8字符集表示一個字符需要使用1~4個字節,但是我們常用的一些字符使用1~3個字節就可以表示了。而在MySQL中字符集表示一個字符所用最大字節長度在某些方面會影響系統的存儲和性能,所以設計MySQL的大叔偷偷的定義了兩個概念:

  • utf8mb3:閹割過的utf8字符集,只使用1~3個字節表示字符。

  • utf8mb4:正宗的utf8字符集,使用1~4個字節表示字符。

有一點需要大家十分的注意,在MySQLutf8utf8mb3的別名,所以之后在MySQL中提到utf8就意味著使用1~3個字節來表示一個字符,如果大家有使用4字節編碼一個字符的情況,比如存儲一些emoji表情啥的,那請使用utf8mb4

字符集的查看

MySQL支持好多好多種字符集,查看當前MySQL中支持的字符集可以用下邊這個語句:

SHOW (CHARACTER SET|CHARSET) [LIKE 匹配的模式];

其中CHARACTER SETCHARSET是同義詞,用任意一個都可以。我們查詢一下(支持的字符集太多了,我們省略了一些):

mysql> SHOW CHARSET; +----------+---------------------------------+---------------------+--------+ | Charset  | Description                     | Default collation   | Maxlen | +----------+---------------------------------+---------------------+--------+ | big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 | ... | latin1   | cp1252 West European            | latin1_swedish_ci   |      1 | | latin2   | ISO 8859-2 Central European     | latin2_general_ci   |      1 | ... | ascii    | US ASCII                        | ascii_general_ci    |      1 | ... | gb2312   | GB2312 Simplified Chinese       | gb2312_chinese_ci   |      2 | ... | gbk      | GBK Simplified Chinese          | gbk_chinese_ci      |      2 | | latin5   | ISO 8859-9 Turkish              | latin5_turkish_ci   |      1 | ... | utf8     | UTF-8 Unicode                   | utf8_general_ci     |      3 | | ucs2     | UCS-2 Unicode                   | ucs2_general_ci     |      2 | ... | latin7   | ISO 8859-13 Baltic              | latin7_general_ci   |      1 | | utf8mb4  | UTF-8 Unicode                   | utf8mb4_general_ci  |      4 | | utf16    | UTF-16 Unicode                  | utf16_general_ci    |      4 | | utf16le  | UTF-16LE Unicode                | utf16le_general_ci  |      4 | ... | utf32    | UTF-32 Unicode                  | utf32_general_ci    |      4 | | binary   | Binary pseudo charset           | binary              |      1 | ... | gb18030  | China National Standard GB18030 | gb18030_chinese_ci  |      4 | +----------+---------------------------------+---------------------+--------+ 41 rows in set (0.01 sec)

可以看到,我使用的這個MySQL版本一共支持41種字符集,其中的Default collation列表示這種字符集中一種默認的比較規則。大家注意返回結果中的最后一列Maxlen,它代表該種字符集表示一個字符最多需要幾個字節。為了讓大家的印象更深刻,我把幾個常用到的字符集的Maxlen列摘抄下來,大家務必記住:

字符集名稱 Maxlen
ascii 1
latin1 1
gb2312 2
gbk 2
utf8 3
utf8mb4 4

比較規則的查看

查看MySQL中支持的比較規則的命令如下:

SHOW COLLATION [LIKE 匹配的模式];

我們前邊說過一種字符集可能對應著若干種比較規則,MySQL支持的字符集就已經非常多了,所以支持的比較規則

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
农民人伦一区二区三区| 爆乳熟妇一区二区三区霸乳| 无尽裸体动漫2d在线观看| 黄色一级视频片| 国产乱子夫妻xx黑人xyx真爽| 国产午夜福利在线播放| 日韩在线视频在线观看| 91插插插插插插插插| 伊人五月天婷婷| 激情五月六月婷婷| 777久久久精品一区二区三区| 91极品尤物在线播放国产| 中文字幕av导航| 青草青青在线视频| 自拍偷拍 国产| 欧美黄网在线观看| 北条麻妃视频在线| 国产免费xxx| 国产小视频精品| 日本a视频在线观看| 红桃视频 国产| 男人天堂1024| 99re6这里有精品热视频| 成人羞羞国产免费网站| 九一免费在线观看| 亚洲欧美激情网| 欧美精品久久久久久久自慰| 日韩精品aaa| 国产超级av在线| 青青在线免费观看| 最新av网址在线观看| 中文字幕国内自拍| 久久久久久久久久久久久国产精品 | 久操网在线观看| 国产欧美精品一二三| 欧美极品欧美精品欧美| 国产卡一卡二在线| 中文字幕55页| 天天做天天干天天操| 97xxxxx| 99999精品视频| 国产高清精品在线观看| 日韩精品在线中文字幕| 午夜啪啪福利视频| 国产精品h视频| 超碰在线免费观看97| 久久99爱视频| 自拍偷拍21p| 色综合天天色综合| 亚洲免费一级视频| 亚洲一区二区三区四区五区| av无码精品一区二区三区| 亚洲国产精品久久久久婷蜜芽| 国产精品视频网站在线观看| 在线看免费毛片| 午夜剧场高清版免费观看| 国产av人人夜夜澡人人爽| 国产亚洲天堂网| 91激情视频在线| 国产美女视频免费看| 欧美h视频在线观看| 欧美美女黄色网| 黄页免费在线观看视频| 日韩中文字幕在线视频观看| 激情伊人五月天| av免费网站观看| 日本黄大片一区二区三区| 日本成人xxx| 日韩 欧美 视频| 日本成人在线免费视频| 在线视频观看一区二区| 男人添女荫道口喷水视频| 国产肥臀一区二区福利视频| 久久精品免费网站| 欧洲xxxxx| 中文字幕无码不卡免费视频| 欧美精品久久久久久久久25p| 北条麻妃亚洲一区| 老太脱裤子让老头玩xxxxx| 午夜激情福利在线| 欧美a级黄色大片| 三级网在线观看| 波多野结衣家庭教师在线| 国产又黄又猛又粗又爽的视频| 在线不卡一区二区三区| 欧美一级视频在线播放| 日韩中文字幕组| 神马午夜伦理影院| 人妻无码视频一区二区三区| 日本三级中文字幕在线观看| 免费国产成人av| 日本a在线天堂| 手机版av在线| www.四虎成人| 美女扒开大腿让男人桶| 男女视频在线观看网站| www.爱色av.com| 国产高清免费在线| 三上悠亚在线一区| 无码日韩人妻精品久久蜜桃| 黄色一级片黄色| 潘金莲一级淫片aaaaa免费看| 国产情侣av自拍| 久久久精品在线视频| 日韩一区二区高清视频| 不用播放器的免费av| 好男人www社区| www.四虎成人| 欧洲熟妇精品视频| 一本久道综合色婷婷五月| 一二三四视频社区在线| 亚洲国产精品无码av| 成人av在线播放观看| 色乱码一区二区三区熟女| 国产成年人视频网站| 亚洲成人天堂网| 国产高清视频网站| 天天色综合天天色| 亚洲性图一区二区| 黄色一级一级片| 精品久久久久久中文字幕2017| 日本精品免费在线观看| 成人高清dvd| 欧妇女乱妇女乱视频| 996这里只有精品| 国产女主播自拍| 午夜精品久久久内射近拍高清| 国产1区2区在线| 无码内射中文字幕岛国片| 激情五月亚洲色图| 99九九99九九九99九他书对| 亚洲理论中文字幕| 国产精品视频一二三四区| 97超碰人人澡| 99视频在线视频| 亚洲美女自拍偷拍| 97国产在线播放| 97超碰成人在线| 国产成人艳妇aa视频在线| 国产无限制自拍| 向日葵污视频在线观看| 国产手机视频在线观看| 欧美,日韩,国产在线| 色播五月综合网| 成人免费播放器| 思思久久精品视频| 国产a级片网站| 岛国av在线免费| 免费av观看网址| 波多野结衣三级在线| 免费成人午夜视频| 国产高清999| 精品视频无码一区二区三区| 激情久久综合网| 免费观看成人网| 国产一线二线三线女| 在线免费观看av的网站| 2018日日夜夜| 四虎永久免费网站| 中文字幕第38页| 日本一极黄色片| 91黄色在线看| 法国空姐在线观看免费| www.亚洲天堂网| 国产av熟女一区二区三区| 中文字幕丰满乱码| 欧美午夜性生活| 欧美xxxxx在线视频| www.一区二区.com| 一级全黄肉体裸体全过程| 日本人69视频| 波多结衣在线观看| 亚洲激情在线观看视频| 久久无码高潮喷水| 欧美日韩在线视频一区二区三区| 欧美少妇在线观看| 蜜桃视频成人在线观看| 色男人天堂av| 国产高清av片| 国产香蕉一区二区三区| 99999精品| 麻豆一区二区三区在线观看| 最近中文字幕免费mv| www.色.com| 免费看日本黄色| 又大又硬又爽免费视频| 无码人妻精品一区二区蜜桃百度| 在线a免费观看| 久久av高潮av| 免费观看日韩毛片| 37pao成人国产永久免费视频| 国产精品无码专区av在线播放| 欧美激情成人网| 91小视频在线播放| www.欧美黄色| 欧美日本视频在线观看| 蜜臀久久99精品久久久酒店新书| 国产三级三级三级看三级| 我看黄色一级片| 最新视频 - x88av|