一、怎樣選擇合適的字符集
對mysql資料庫來說,字符集很重要,因為資料庫儲存的資料大部分都是各種文字,字符集對資料庫的儲存,處理效能都會有所影響。
主要考慮一下幾方面的因素
1.滿足應用支援語言的需求,應用處理各種各樣的文字,發布到使用不同語言的國家或地區,可以選擇unicode字符集,mysql的話可以選擇utf-8
2.如果應用中涉及已有資料的匯入,就要充分考慮資料庫字符集對已有資料的相容性。
假設資料是gbk文字,如果選擇其他資料庫字符集,就可能導致某些文字無法正確匯入的問題。
3.如果資料庫需要支援一般是中文,資料量很大,效能要求也很高,可以選擇雙位元組定長編碼的中文字符集,比如gbk。
因為相對於utf-8而言,gbk比較小,每個漢字只占用2個位元組,而utf-8漢字編碼需要3個位元組,這樣可以減少磁碟i/o,資料庫快取,已經網路傳輸的時間,從而提高效能。
如果是英文本元,僅有少量漢字字元,那麼選擇utf-8更好。
4.如果資料庫需要做大量的字元運算,如比較、排序,那麼選擇定長字符集可能會更好,因為定長字符集的處理速度比變長的快。
二、mysql支援的字符集
mysql伺服器可以支援多種字符集,在同一臺伺服器,同乙個資料庫,同乙個表都可以指定不同的字符集。
檢視所有可用字符集的命令 show character set;
例如mysql5.7支援41種可以用字符集
三、mysql的字符集包括字符集和校對規則
1.字符集用來定義mysql儲存字串的方式
2.校對規則用來定義比較字串的方式。
3.字符集和校對規則是一對多關係
4.每個字符集至少對應乙個校對規則
例如:檢視gbk的校對
校對規則命名約定,它們以字符集名開始,通常包括乙個語言名,並且以_ci(大小寫不敏感)、_cs(大小寫敏感)或者_bin(二元)
四、mysql字符集的設定
1.mysql的字符集和校對規則有4個級別的預設設定,伺服器級、資料庫級、表級、和字段級。
2.伺服器字符集和校對規則
預設伺服器字符集使用latin1
可以在my.cnf中設定伺服器字符集,設定完重啟就生效
[mysqld]
character-set-server=utf8
檢視當前伺服器的字符集
mysql> show variables like 'character_set_server';
| variable_name | value |
| character_set_server | utf8 |
1 row in set (0.00 sec)
4.檢視當前伺服器的校對規則
mysql> show variables like 'collation_server';
| variable_name | value |
| collation_server | utf8_general_ci |
1 row in set (0.00 sec)
注意:建立完資料庫要修改字符集,可以使用alter db_name character set
但是資料庫裡面存在資料,就不能將已有的資料按照新的字符集進行存放,所以不能修改資料庫字符集直接修改資料的內容。
5.連線字符集和校對規則
客戶端和伺服器的互動操作,mysql提供了3個不同的引數:character_set_client,character_set_connection和character_set_result。
分別代表客戶端、連線和返回結果的字符集
通常這個3個字符集應該相同的,才可以確保使用者寫入的資料可以正確讀出
可以在my.cnf中設定
[mysql]
default-character-set=utf8
這樣伺服器啟動後,所有連線預設就是使用utf8字符集進行連線的,而不需要在程式中執行set names。
五、字符集的修改步驟
alter database db_name character set = utf8;
alter table table_name character set = utf8;
mysql 集群字符集 Mysql 字符集
字符集與字元比較 字符集字符集是某種字元的集合,比如最常見的ascii碼,由127個字元組成,只需要乙個位元組就能表示 我們常說的字符集還是gbk iso utf8 mysql 我們使用得最多的字符集就是gbk 和 utf8了 他們都是變長字符集,如果字元在ascii範圍內就使用乙個位元組表示,其他...
mysql字符集修改 MySql字符集修改
問題分析 普通的字串或者表情都是佔位3個位元組,所以utf8足夠用了,但是移動端的表情符號佔位是4個位元組,普通的utf8就不夠用了,為了應對無線網際網路的機遇和挑戰 避免 emoji 表情符號帶來的問題 涉及無線相關的 mysql 資料庫建議都提前採用 utf8mb4 字符集,這必須要作為移動網際...
mysql字符集問題 mysql字符集遇到的問題?
character introducer 翻譯過來就是字元引導。也就是針對字串,顯式的給定乙個字元編碼和排序規則,不受系統引數的影響。語法很簡單 charset name string collate collation name 示例 字串 北京加油 字符集 utf8mb4,排序規則 utf8mb...