mysql字符集問題 mysql字符集遇到的問題?

2021-10-17 13:44:07 字數 1367 閱讀 9915

character introducer

翻譯過來就是字元引導。也就是針對字串,顯式的給定乙個字元編碼和排序規則,不受系統引數的影響。

語法很簡單:

[_charset_name] 'string' [collate collation_name]

示例:字串"北京加油❤!"

-- 字符集 utf8mb4,排序規則 utf8mb4_bin

select _utf8mb4 "北京加油❤!" collate utf8mb4_bin as result;

| result |

| 北京加油❤! |

1 row in set (0.00 sec)

-- 字符集 utf8mb4,collate 字句缺失,此時對應排序規則為utf8mb4_w0900_ai_ci

select _utf8mb4 "北京加油❤!" as result;

| result |

| 北京加油❤! |

1 row in set (0.00 sec)

-- 字符集缺失,此時字符集按照引數 @@character_set_connection 值來指定。

mysql> select "北京加油❤!" collate gb18030_chinese_ci as result;

error 1253 (42000): collation 'gb18030_chinese_ci' is not valid for character set 'utf8mb4'

-- 檢視變數 @@character_set_connection,確認其字符集不包含排序規則 gb18030_chinese_ci,所以以上語句報錯。

mysql> select @@character_set_connection;

| @@character_set_connection |

| utf8mb4 |

1 row in set (0.00 sec)

-- 那給下正確的排序規則 utf8mb4_bin,執行正確。

mysql> select "北京加油❤!" collate utf8mb4_bin as result;

| result |

| 北京加油❤! |

1 row in set (0.00 sec)

-- 字符集和排序規則都不指定,此時字串對應的字符集和排序規則和引數 @@character_set_connection 一致。

select "北京加油❤!" as result;

-- 那這條語句其實被 mysql 解釋為

select _utf8mb4 "北京加油❤!" collate utf8mb4_0900_ai_ci as result;

總結 introducer 使用規則:

mysql字符集問題 mysql字符集問題

我們新建mysql資料庫的時候,需要指定資料庫的字符集,一般我們都是選擇utf8這個字符集,但是還會又乙個utf8mb4這個字符集,好像和utf8有聯絡,今天就來解析一下這兩者的區別。起源mysql在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容...

mysql字符集問題 mysql字符集問題

用show variables like char 檢視mysql的引數,結果應如下 mysql show variables like char variable name value character set client gbk character set connection gbk ch...

mysql字符集問題 MySql字符集問題

mysql字符集問題 xinjinlong 2010 11 14 22 10 47 閱讀 1334 上次說了一下c從mysql裡面讀取資料,這次在介紹一下如何把mysql的字符集設定為utf8 第一 檢視自己mysql的字符集 mysql show variables like character ...