新聞中心

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),振興企業(yè)網(wǎng)站建設(shè),振興品牌網(wǎng)站建設(shè),網(wǎng)站定制,振興網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,振興網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
字符(Character)是計(jì)算機(jī)中字母、數(shù)字、符號的統(tǒng)稱,一個(gè)字符可以是一個(gè)中文漢字、一個(gè)英文字母、一個(gè)阿拉伯?dāng)?shù)字、一個(gè)標(biāo)點(diǎn)符號等。
計(jì)算機(jī)是以二進(jìn)制的形式來存儲數(shù)據(jù)的。平時(shí)我們在顯示器上看到的數(shù)字、英文、標(biāo)點(diǎn)符號、漢字等字符都是二進(jìn)制數(shù)轉(zhuǎn)換之后的結(jié)果。
字符集(Character set)定義了字符和二進(jìn)制的對應(yīng)關(guān)系,為字符分配了唯一的編號。常見的字符集有 ASCII、GBK、IOS-8859-1 等。
字符編碼(Character encoding)也可以稱為字集碼,規(guī)定了如何將字符的編號存儲到計(jì)算機(jī)中。
校對規(guī)則(Collation)也可以稱為排序規(guī)則,是指在同一個(gè)字符集內(nèi)字符之間的比較規(guī)則。字符集和校對規(guī)則是一對多的關(guān)系,每個(gè)字符集都有一個(gè)默認(rèn)的校對規(guī)則。字符集和校對規(guī)則相輔相成,相互依賴關(guān)聯(lián)。
簡單來說,字符集用來定義 MySQL 存儲字符串的方式,校對規(guī)則用來定義 MySQL 比較字符串的方式。
有些數(shù)據(jù)庫并沒有清晰的區(qū)分開字符集和校對規(guī)則。例如,在 SQL Server 中創(chuàng)建數(shù)據(jù)庫時(shí),選擇字符集就相當(dāng)于選定了字符集和校對規(guī)則。
而在 MySQL 中,字符集和校對規(guī)則是區(qū)分開的,必須設(shè)置字符集和校對規(guī)則。一般情況下,沒有特殊需求,只設(shè)置其一即可。只設(shè)置字符集時(shí),MySQL 會將校對規(guī)則設(shè)置為字符集中對應(yīng)的默認(rèn)校對規(guī)則。
可以通過
SHOW VARIABLES LIKE 'character%';命令查看當(dāng)前 MySQL 使用的字符集,命令和運(yùn)行結(jié)果如下:
mysql> SHOW VARIABLES LIKE 'character%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.01 sec)
上述運(yùn)行結(jié)果說明如下表所示:
| 名稱 | 說明 |
|---|---|
| character_set_client | MySQL 客戶端使用的字符集 |
| character_set_connection | 連接數(shù)據(jù)庫時(shí)使用的字符集 |
| character_set_database | 創(chuàng)建數(shù)據(jù)庫使用的字符集 |
| character_set_filesystem | MySQL 服務(wù)器文件系統(tǒng)使用的字符集,默認(rèn)值為 binary,不做任何轉(zhuǎn)換 |
| character_set_results | 數(shù)據(jù)庫給客戶端返回?cái)?shù)據(jù)時(shí)使用的字符集 |
| character_set_server | MySQL 服務(wù)器使用的字符集,建議由系統(tǒng)自己管理,不要人為定義 |
| character_set_system | 數(shù)據(jù)庫系統(tǒng)使用的字符集,默認(rèn)值為 utf8,不需要設(shè)置 |
| character_sets_dir | 字符集的安裝目錄 |
可以通過
SHOW VARIABLES LIKE 'collation\_%';命令查看當(dāng)前 MySQL 使用的校對規(guī)則,命令和運(yùn)行結(jié)果如下:
mysql> SHOW VARIABLES LIKE 'collation\_%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | gbk_chinese_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ 3 rows in set, 1 warning (0.01 sec)
對上述運(yùn)行結(jié)果說明如下:
- collation_connection:連接數(shù)據(jù)庫時(shí)使用的校對規(guī)則
- collation_database:創(chuàng)建數(shù)據(jù)庫時(shí)使用的校對規(guī)則
- collation_server:MySQL 服務(wù)器使用的校對規(guī)則
校對規(guī)則命令約定如下:
- 以校對規(guī)則所對應(yīng)的字符集名開頭
- 以國家名居中(或以 general 居中)
- 以 ci、cs 或 bin 結(jié)尾,ci 表示大小寫不敏感,cs 表示大小寫敏感,bin 表示按二進(jìn)制編碼值比較。
MySQL字符集的轉(zhuǎn)換過程
MySQL 中字符集的轉(zhuǎn)換過程如下:
1)在命令提示符窗口(cmd 命令行)中執(zhí)行 MySQL 命令或 sql 語句時(shí),這些命令或語句從“命令提示符窗口字符集”轉(zhuǎn)換為“character_set_client”定義的字符集。
2)使用命令提示符窗口成功連接 MySQL 服務(wù)器后,就建立了一條“數(shù)據(jù)通信鏈路”,MySQL 命令或 sql 語句沿著“數(shù)據(jù)鏈路”傳向 MySQL 服務(wù)器,由 character_set_client 定義的字符集轉(zhuǎn)換為 character_set_connection 定義的字符集。
3)MySQL 服務(wù)實(shí)例收到數(shù)據(jù)通信鏈路中的 MySQL 命令或 sql 語句后,將 MySQL 命令或 sql 語句從 character_set_connection 定義的字符集轉(zhuǎn)換為 character_set_server 定義的字符集。
4)若 MySQL 命令或 sql 語句針對于某個(gè)數(shù)據(jù)庫進(jìn)行操作,此時(shí)將 MySQL 命令或 sql 語句從 character_set_server 定義的字符集轉(zhuǎn)換為 character_set_database 定義的字符集。
5)MySQL 命令或 sql 語句執(zhí)行結(jié)束后,將執(zhí)行結(jié)果設(shè)置為 character_set_results 定義的字符集。
6)執(zhí)行結(jié)果沿著打開的數(shù)據(jù)通信鏈路原路返回,將執(zhí)行結(jié)果從 character_set_results 定義的字符集轉(zhuǎn)換為 character_set_client 定義的字符集,最終轉(zhuǎn)換為命令提示符窗口字符集,顯示到命令提示符窗口中。
標(biāo)題名稱:MySQL字符集和校對規(guī)則詳解
文章位置:http://m.fisionsoft.com.cn/article/dhipcjg.html


咨詢
建站咨詢
