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

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

帶你搞懂MySQL字符集和比較規(guī)則

本篇文章給大家?guī)砹岁P(guān)于mysql中字符集比較的相關(guān)知識,其中包括了MySQL中支持的字符集和排序規(guī)則,希望對大家有幫助。

帶你搞懂MySQL字符集和比較規(guī)則

字符集和比較規(guī)則簡介

字符集簡介

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

  1. 你要把哪些字符映射成二進制數(shù)據(jù)?

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

  2. 怎么映射?

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

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

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

  • 編碼規(guī)則如下:

    采用1個字節(jié)編碼一個字符的形式,字符和字節(jié)的映射關(guān)系如下:

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

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

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

比較規(guī)則簡介

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

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

  1. 將兩個大小寫不同的字符全都轉(zhuǎn)為大寫或者小寫。
  2. 再比較這兩個字符對應(yīng)的二進制數(shù)據(jù)。

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

一些重要的字符集

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

  • ASCII字符集

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

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

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

  • GB2312字符集

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

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

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

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

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

  • utf8字符集

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

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

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

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

MySQL中支持的字符集和排序規(guī)則

MySQL中的utf8和utf8mb4

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

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

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

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

字符集的查看

MySQL支持好多好多種字符集,查看當(dāng)前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列表示這種字符集中一種默認(rèn)的比較規(guī)則。大家注意返回結(jié)果中的最后一列Maxlen,它代表該種字符集表示一個字符最多需要幾個字節(jié)。為了讓大家的印象更深刻,我把幾個常用到的字符集的Maxlen列摘抄下來,大家務(wù)必記住:

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

比較規(guī)則的查看

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

SHOW COLLATION [LIKE 匹配的模式];

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
成年人看的毛片| 国产小视频免费| mm131午夜| 国产激情在线观看视频| 伊人久久在线观看| 亚洲xxx在线观看| 久久久久久久久久久视频| 三级黄色片免费看| 激情婷婷综合网| 欧美成人免费在线观看视频| 久久久精品视频国产| 久久黄色片网站| 麻豆av免费在线| 日韩少妇内射免费播放18禁裸乳| 日本老太婆做爰视频| 超碰在线播放91| 成人免费无码av| 欧在线一二三四区| 免费在线a视频| 香港三级韩国三级日本三级| 污污污污污污www网站免费| 九九九九九国产| 亚洲污视频在线观看| xxxx一级片| xx欧美撒尿嘘撒尿xx| 日韩视频免费在线播放| 天堂在线资源视频| 九一精品在线观看| 亚洲国产精品三区| www.精品在线| 91网址在线观看精品| 手机成人av在线| 夜夜爽久久精品91| 男女啪啪免费观看| 国产夫妻自拍一区| 久无码久无码av无码| 无码粉嫩虎白一线天在线观看| 狠狠干视频网站| 久久国产午夜精品理论片最新版本| 日韩欧美精品免费| 看av免费毛片手机播放| 一本大道熟女人妻中文字幕在线| 老熟妇仑乱视频一区二区| 蜜臀av免费观看| 成人性做爰片免费视频| www.好吊操| 毛片av免费在线观看| 冲田杏梨av在线| 91性高潮久久久久久久| 国产真人做爰毛片视频直播| 亚洲狼人综合干| 黄色网址在线免费看| 国产欧美日韩小视频| 国产又黄又猛视频| 成人免费看片视频在线观看| 欧美一级视频在线播放| 粉色视频免费看| 黄色成人在线看| 一起操在线视频| 老子影院午夜伦不卡大全| 午夜在线观看av| 波多野结衣av一区二区全免费观看| 欧美国产激情视频| 亚洲制服中文字幕| 黄色免费福利视频| 亚洲五月激情网| 97国产精东麻豆人妻电影| 想看黄色一级片| 日本网站免费在线观看| 午夜影院免费版| 久章草在线视频| 国产免费xxx| 中文字幕免费高清在线| 丝袜老师办公室里做好紧好爽| www亚洲成人| 欧美在线观看成人| 欧美这里只有精品| 午夜啪啪小视频| 成人亚洲视频在线观看| 日韩视频在线视频| 中文字幕av导航| 国产一级片中文字幕| 国产一区视频免费观看| 国产午夜福利视频在线观看| 日韩欧美精品免费| 免费特级黄色片| 国产成人亚洲综合无码| 午夜免费福利网站| 亚洲精品永久视频| 奇米影视四色在线| 天天干天天玩天天操| 亚洲激情在线观看视频| 黄色高清无遮挡| 大肉大捧一进一出好爽动态图| 日本欧美黄色片| 18禁男女爽爽爽午夜网站免费| 黄色一级片在线看| 国产免费一区二区视频| 日本香蕉视频在线观看| 男人添女荫道口女人有什么感觉| 国产成人亚洲综合无码| 麻豆传媒网站在线观看| 大地资源网在线观看免费官网| 中文字幕第一页亚洲| 免费观看国产视频在线| 91大学生片黄在线观看| 搞av.com| 欧美激情成人网| 欧美激情第一区| 熟妇熟女乱妇乱女网站| www.-级毛片线天内射视视| 欧美这里只有精品| 中文字幕无码精品亚洲35| 无码人妻丰满熟妇区毛片18| 一区二区在线播放视频| 污污视频网站在线| 在线观看成人免费| 国产极品尤物在线| 久久久久久久片| 黄色www在线观看| 妺妺窝人体色777777| 国产一区视频免费观看| 国产5g成人5g天天爽| 996这里只有精品| 久久国产亚洲精品无码| 欧美又黄又嫩大片a级| 成人黄色av片| 在线不卡一区二区三区| 性一交一乱一伧国产女士spa| 国产成人亚洲精品无码h在线| 久久国产这里只有精品| 2021狠狠干| 在线观看的毛片| 男人j进女人j| 污网站在线免费| 噜噜噜久久亚洲精品国产品麻豆| 亚洲欧洲日本精品| 激情五月婷婷六月| 日韩精品aaa| 欧美三级午夜理伦三级| 日本五级黄色片| 午夜免费视频网站| 欧美精品99久久| 日韩a级黄色片| 激情五月婷婷基地| 日本三级免费网站| 日本福利视频一区| 中文字幕在线中文| 天天干天天综合| 九九视频精品在线观看| 国产特级淫片高清视频| 国产一级片91| 三年中文高清在线观看第6集| 黄www在线观看| 男人天堂1024| 无罩大乳的熟妇正在播放| 精品成在人线av无码免费看| 欧美爱爱视频网站| 一级片免费在线观看视频| 男女视频在线看| 日本不卡一区在线| 国产aaaaa毛片| 日本中文字幕高清| 九九热在线免费| 宅男噜噜噜66国产免费观看| 黄色动漫在线免费看| 欧美日韩在线一| 中文字幕日本最新乱码视频| 黄色av网址在线播放| 免费看的黄色大片| 久久久久久久久久久99| 伊人成色综合网| 免费毛片小视频| 天天摸天天碰天天添| av污在线观看| 三级黄色片播放| 中文字幕人妻熟女人妻洋洋| 久久久无码中文字幕久...| 午夜久久久久久久久久久| 成年人视频大全| 蜜臀av色欲a片无码精品一区 | 欧美性视频在线播放| 免费看啪啪网站| 热久久最新地址| 中文字幕无码精品亚洲35| 国产亚洲天堂网| 爱爱爱爱免费视频| 国产欧美精品aaaaaa片| 国产精品一区二区免费在线观看| 99草草国产熟女视频在线| 拔插拔插华人永久免费| 成人一级生活片| 无码少妇一区二区三区芒果| www.桃色.com| 加勒比成人在线| 亚洲国产精品三区| 大胆欧美熟妇xx| 国产福利影院在线观看| mm131午夜| 成人免费毛片播放|