MySQL字符集和校對規則(character set & collation)
檢視所有可用字符集:
mysql> show character set;
+----------+-----------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+-----------------------------+---------------------+--------+
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
檢視字符集(character):儲存方式 和 校對規則(collation):比較字串的方式
select * from information_schema.character_sets
校對規則
mysql> show collation like '%gbk%';
+----------------+---------+----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+----------------+---------+----+---------+----------+---------+
| gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 |
| gbk_bin | gbk | 87 | | Yes | 1 |
+----------------+---------+----+---------+----------+---------+
2 rows in set (0.00 sec)
命名約定:
字符集名開始+:
_ci (大小寫不敏感)
_cs(大小寫敏感)
_bin(二元,比較字元編碼值,對大小寫不敏感)
例:
select case when 'A' COLLATE utf8_general_ci='a' collate utf8_general_ci then 1 else 0 end;
1
--校對規則是ci時認為A和a相同
select case when 'A' COLLATE utf8_bin='a' collate utf8_bin then 1 else 0 end;
0
Mysql字符集的設定
SERVER伺服器級別、DB資料庫級、TABLE表級、欄位級
SERVER伺服器字符集和校對規則
1. my.cnf (ini) 設定
[mysql]
character-set-server=utf8
2. 啟動選項
mysqld --character-set-server=utf8
3. 編譯時指定
cmake . –DDEFAULT_CHARSET=utf8
如果以上都沒有指定則使用:latin1
mysql> show variables like 'character_set_server%';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| character_set_server | utf8 |
+----------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'collation_server%';
+------------------+-----------------+
| Variable_name | Value |
+------------------+-----------------+
| collation_server | utf8_general_ci |
+------------------+-----------------+
1 row in set (0.00 sec)
DB資料庫字符集合校對規則
在資料庫建立時指定,可以alter database修改,但是已有的資料不會修改
1>如果指定了DB字符集和校對則使用
2>如果指定了DB字符集沒指定校對,使用字符集預設校對
3>如果指定了DB校對沒指定字符集,使用校對相關字符集
4>如果沒有設定DB字符集和校對,使用server字符集和校對
mysql> show variables like 'character_set_database%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | utf8 |
+------------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'collation_database%';
+--------------------+-----------------+
| Variable_name | Value |
+--------------------+-----------------+
| collation_database | utf8_general_ci |
+--------------------+-----------------+
1 row in set (0.00 sec)
Table表字符集和校對
CREATE TABLE `t` (
`id` varchar(100) DEFAULT NULL,
`context` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8
建立table時指定,如果未設定根據db字符集
連線字符集
character_set_client 客戶端字符集
character_set_connection 連線字符集
character_ser_results 返回字符集
這3個引數確保相同,保證寫入讀出都正常
設定:
[mysql]
default-character-set=utf8
可統一設定:
Set names utf8
強制設定字符集
select _utf8 '字符集',_big5 '字符集'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2152102/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL字符集和校對規則(Collation)MySql
- mysql的字符集校對規則MySql
- mysql關於字符集character set的總結MySql
- rhel4 mysql5.5 字符集_character setMySql
- 【勝通】mysql連線通道中的字符集和校驗規則MySql
- 【轉】修改Oracle字符集(character set)Oracle
- 【MySQL】資料庫字元校對規則MySql資料庫字元
- 【勝通 】mysql字符集與校驗規則的設定MySql
- Oracle 10中修改字符集(character set)Oracle
- 塗抹MySQL--第6章 開源運動與開源軟體MySQL - 6.1字符集和校對規則MySql
- 【Mysql】character-set-server引數MySqlServer
- 從根上理解 MySQL 的字符集和比較規則MySql
- MYSQL5.5修改字符集報錯:unknown variable 'default-character-set=utf8'MySql
- TiDB 6.0 新特性解讀 | Collation 規則TiDB
- Qt #pragma execution_character_set("utf-8") 執行字符集QT
- mysql:Variable 'character_set_client' can't be set to the value of 'NULL'解決MySqlclientNull
- TiDB 6.0 新特性解讀丨 Collation 規則TiDB
- 關於mysql字符集及排序規則設定MySql排序
- MySQL環境變數裡關於字符集character_set相關引數的解釋MySql變數
- 《Oracle MySQL程式設計自學與面試指南》05:字符集和校對集OracleMySql程式設計面試
- MySQL 字符集與亂碼與collation設定的問題?MySql
- [mysql] 批量匯入提示: Variable ‘character_set_client’ can’t be set to the value of ‘NULLMySqlclientNull
- Unknown initial character set index ‘255‘ received from server. Initial client character set can beIndexServerclient
- rhel5_oracle10g_10.2.0.4_字符集character set_nls_valid_valueOracle
- MySQL:簡單記錄character_set_server影響引數MySqlServer
- Indexing Mixed-Character Set ColumnsIndex
- character_set_database的意義Database
- SQLServer的排序規則(字符集編碼)SQLServer排序
- 關於MySQL中的8個 character_set 變數說明MySql變數
- 前端Vue中常用rules校驗規則前端Vue
- 校驗檔案的搜尋規則
- 正整數表單校驗規則
- 資料庫建庫時字符集和排序規則的選擇資料庫排序
- 對線面試官:Mysql組合索引的生效規則面試MySql索引
- 2021-2-18:請你說說MySQL的字符集與排序規則對開發有哪些影響?MySql排序
- Angular8 form 表單對隱藏元素取消表單校驗規則AngularORM
- laravel 校驗規則 Rule::in 等對中文字元不友好的問題Laravel字元
- Variable 'character_set_client' can't be set to the value of Null的解決方法clientNull