Mysql字符集
字符集是什么?
為了更好的識(shí)別中文、日文、英文、希臘語(yǔ)。對(duì)于常用的符號(hào)進(jìn)行了編碼,這個(gè)編碼就是字符集。
字符集確定了文字的存儲(chǔ)方式。
字符集相當(dāng)于是計(jì)算機(jī)中人類(lèi)的語(yǔ)言。
舉個(gè)例子:
我說(shuō)的是英文,所以我存儲(chǔ)的時(shí)候要用英文文字來(lái)存儲(chǔ)。
如果我說(shuō)的是中文,用英文字符來(lái)存儲(chǔ)的話。那么人們就看不懂也看不明白,就是我們所說(shuō)的亂碼。
因?yàn)樽址嗔?,足夠有幾十種上百種之多。所以我們不需要了解太多的字符集的知識(shí),甚至不需要了解字符集到底是如何編成人類(lèi)可見(jiàn)字符的。
字符集的重點(diǎn)知識(shí)
我們只需要了解:
- 常用字符集
- 數(shù)據(jù)庫(kù)中我們用什么字符集
英文字符集:
字符集 | 說(shuō)明 | 字節(jié)長(zhǎng)度 |
---|---|---|
ASCII | 美國(guó)標(biāo)準(zhǔn)信息交換代碼 | 單字節(jié) |
GBK | 漢字內(nèi)碼擴(kuò)展規(guī)范 | 雙字節(jié) |
unicode | 萬(wàn)國(guó)碼 | 4字節(jié) |
UTF-8 | Unicode的可變長(zhǎng)度字符編碼 | 1到6個(gè)字節(jié) |
ASCII
ASCII 碼使用指定的7 位或8 位二進(jìn)制數(shù)組合來(lái)表示128 或256 種可能的字符。標(biāo)準(zhǔn)ASCII 碼也叫基礎(chǔ)ASCII碼,使用7 位二進(jìn)制數(shù)來(lái)表示所有的大寫(xiě)和小寫(xiě)字母,數(shù)字0 到9、標(biāo)點(diǎn)符號(hào), 以及在美式英語(yǔ)中使用的特殊控制字符。
其中:
0~31及127(共33個(gè))是控制字符或通信專(zhuān)用字符(其余為可顯示字符),如控制符:LF(換行)、CR(回車(chē))、FF(換頁(yè))、DEL(刪除)、BS(退格)、BEL(響鈴)等;通信專(zhuān)用字符:SOH(文頭)、EOT(文尾)、ACK(確認(rèn))等;ASCII值為8、9、10 和13 分別轉(zhuǎn)換為退格、制表、換行和回車(chē)字符。它們并沒(méi)有特定的圖形顯示,但會(huì)依不同的應(yīng)用程序,而對(duì)文本顯示有不同的影響。
32~126(共95個(gè))是字符(32是空格),其中48~57為0到9十個(gè)阿拉伯?dāng)?shù)字。
65~90為26個(gè)大寫(xiě)英文字母,97~122號(hào)為26個(gè)小寫(xiě)英文字母,其余為一些標(biāo)點(diǎn)符號(hào)、運(yùn)算符號(hào)等。
GBK
GBK 向下與 GB 2312 編碼兼容。是中華人民共和國(guó)定義的漢字計(jì)算機(jī)編碼規(guī)范。早期版本為GB2312。
Unicode
Unicode(統(tǒng)一碼、萬(wàn)國(guó)碼、單一碼)Unicode是國(guó)際組織制定的可以容納世界上所有文字和符號(hào)的字符編碼方案。以滿足跨語(yǔ)言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。
UTF-8
是一種針對(duì)Unicode的可變長(zhǎng)度字符編碼,也是萬(wàn)國(guó)碼。因?yàn)閁NICODE比ASCII占用大一倍的空間,而對(duì)ASCII來(lái)說(shuō)高字節(jié)的0對(duì)他毫無(wú)用處。為了解決這個(gè)問(wèn)題,就出現(xiàn)了一些中間格式的字符集,他們被稱(chēng)為通用轉(zhuǎn)換格式,即UTF(Universal Transformation Format)
實(shí)際工作中要使用的編碼
在中文中常用的字符集分為utf-8和GBK。
實(shí)際使用的如下:
字符集 | 說(shuō)明 |
---|---|
gbk_chinese_ci | 簡(jiǎn)體中文, 不區(qū)分大小寫(xiě) |
utf8_general_ci | Unicode (多語(yǔ)言), 不區(qū)分大小寫(xiě) |
觀察(圖一)的特點(diǎn)你會(huì)發(fā)現(xiàn),MySQL字符集由三個(gè)部份組成:
1.字符集
2.語(yǔ)言
3.類(lèi)型
最后的bin是指二進(jìn)制字符集,后面的ci是指存儲(chǔ)排序時(shí)不區(qū)分字符的大小寫(xiě)。
注意:
?mysql在寫(xiě)utf-8的時(shí)候?qū)懙氖莡tf8。不加中間的中橫線。
(圖一)