字元集
字元集的重點知識
我們只需要了解:
1. 常用字元集
2. 資料庫中我們用什麼字元集
英文字元集:
ASCII
ASCII 碼使用指定的7 位元或8 位元二進位數組合來表示128 或256 種可能的字元。標準ASCII 碼也叫基礎ASCII碼,使用7 位元二進位數來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控製字元。
其中:
0~31及127(共33個)是控製字元或通訊專用字元(其餘為可顯示字元),如控制符:LF(換行)、CR(Enter)、FF(換頁)、DEL(刪除)、BS( 、10 和13 分別轉換為退格、製表、換行和回車字元。它們並沒有特定的圖形顯示,但會依不同的應用程序,而對文字顯示有不同的影響。
32~126(共95個)是字元(32是空格),其中48~57為0到9十個阿拉伯數字。
65~90為26個大寫英文字母,97~122號為26個小寫英文字母,其餘為一些標點符號、運算符號等。
GBK
GBK 向下與 GB 2312 編碼相容。是中華人民共和國定義的漢字計算機編碼規範。早期版本為GB2312。
Unicode
Unicode(統一碼、萬國碼、單碼)Unicode是國際組織制定的可以容納世界上所有文字和符號的字元編碼方案。以滿足跨語言、跨平台進行文字轉換、處理的要求。
UTF-8
是針對Unicode的可變長度字元編碼,也是萬國碼。因為UNICODE比ASCII佔用大一倍的空間,而對ASCII來說高位元組的0對他毫無用處。為了解決這個問題,就出現了一些中間格式的字元集,他們被稱為通用轉換格式,即UTF(Universal Transformation Format)
#實際工作中要使用的編碼
在中文常用的字元集分為utf-8和GBK。
實際使用的如下:
觀察(圖一)的特色你會發現,MySQL字元集由三個部份組成:
1.字元集
2.語言
3.類型
#最後的bin是指二進位字元集,後面的ci是指儲存排序時不區分字元的大小寫。
注意:
mysql在寫utf-8的時候寫的是utf8。不加中間的中橫線。
(圖一)
1.關於MySQL字元集
MySQL的字元集支援(Character Set Support)有兩個面向:
字元集(Character set)和排序方式(Collation)。
MySQL對於字元集的支援細化到四個層次: 伺服器(server),資料庫(database),資料表(table)和連線(connection)。
MySQL對於字元集的指定可以細化到一個資料庫,一張表,一列,應該用什麼字元集。
2.查看MySQL字元集
2.1.查看字元集的設定
mysql> show variables like 'character_set_%';
2.2.查看字元集排序設定
mysql> show variables like 'collation_%';
#3.修改MySQL字元集
##3.1修改伺服器等級字元集a.暫時修改mysql>SET GLOBAL character_set_server=utf8;b.永久修改 開啟/etc/mysql/my.cnf,在[mysqld]後新增character-set- server=utf83.2修改資料庫層級 a.臨時變更
mysql>SET GLOBAL character_set_database=utf8;b. 永久變更改了伺服器層級就可以了
3.3修改表級
mysql>ALTER TABLE table_name DEFAULT CHARSET utf8;更改了後永久生效
mysql>ALTER TABLE `products` CHANGE `products_model` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; 更改了后永久生效3.5更改連接字元集 a. 暫時變更:mysql> SET GLOBAL character_set_client;b. 永久變更:開啟/etc/mysql/my.cnf,在[client]後面加上default-character-set=utf8
#