MySQL8字元 校驗集的檢視與修改

2021-10-14 03:57:43 字數 1277 閱讀 9206

mysql8預設使用utf8mb4\utf8mb4_0900_ai_ci。

在utf8 unicode 編碼下:每個字元的長度是不固定的,根據不同的字變化。

漢字1個漢字為1個字元,常用漢字佔3個位元組,不常用的漢字佔4個位元組;

而mysql的utf8又叫utf8mb3,存不了不常用的4個位元組和emoji表情,所以新增了utf8mb4;

英文1個英文本母為1個字元,佔1個位元組;

utf8mb4是utf8的超集,對於3個位元組的漢字,儲存形式是一致的,所以可以直接公升級

方法一:show variables like '%character%';

方法二:show variables like 'collation%';

show create database 庫名
show create table 表名;
show full columns from 表名;
alter schema 庫名 default character set utf8mb4 collate utf8mb4_0900_ai_ci;
alter table 表名 default character set utf8 collate utf8_bin;
alter table 表名 modify 欄位名 字段屬性 character set utf8mb4 collate utf8mb4_0900_ai_ci;
如果僅設定了字符集,系統會預設給校驗集。

utf8mb4

預設校驗為utf8mb4_0900_ai_ci,大小寫不敏感

utf8mb4_0900_bin,大小寫敏感

utf8

預設校驗集為utf8_general_ci,大小寫不敏感

utf8_bin,大小寫敏感

關於**插入emoji表情報錯,請檢查 表編碼 和 資料庫連線編碼 是否同時為utf8mb4。

tips: 要使用 utf8mb4 節省空間,用varchar替換char。否則,mysql必須為使用 utf8mb4字符集的列的每乙個字元保留四位元組的空間,因為其最大長度可能是四位元組。

例如,mysql必須為乙個使用 utf8mb4 字符集的 char(10)的列保留40位元組空間。

mysql中的utf8字符集與標準UTF 8的區別

儘管字面上非常相似,但mysql的utf 8的覆蓋範圍僅僅是所有utf 8字符集的一部分。這非常容易誤導初學者。utf 8是ucs字符集的一種編碼方式,可能將乙個字元編碼為1個位元組,2個位元組,3個位元組,或者4個位元組。編碼為1個位元組的字元就是ascii碼 有時稱為latin文字元號 包含了拉...

MySQL(九) 字符集

編碼 字元 二進位制 解碼 二進位制 字元 為什麼會出現亂碼?因為編碼和解碼的規則不同。本質上都是同樣的一串二進位製流,按照不同的規則解讀的結果當然是不同的。模擬一下我們的時間戳轉時間的場景,時間戳就好比是二進位制,時區就好比是不同的字符集,同乙個時間戳用不同的時區轉換,得到的結果當然是不同的。所以...

UTF 8字符集的學習

今天因為擷取中文字串的原因,查了下utf 8字符集的資料,發現之前記憶的知識點有誤,之前一直以為utf 8中英文是1個位元組,其他語言的字元是3個位元組,查完資料後才發現utf 8字符集是一種變長字符集,每個字元占用位元組從1個到6個不等,恰好英文本元使用1個位元組,中文字元使用3個位元組,而且還知...