Mysql
在 MySQL 中儲存表情符號
我是 MySQL 數據庫的新手。我想將表情符號儲存在我的數據庫中。我的數據庫中已經有數據,我不想失去它。
我不知道使用 MySQL 控制台儲存 utf8mb4 字元集的正確方法。有沒有辦法使用 mysql-administrator 做到這一點?
mysql> SHOW VARIABLES LIKE "%version%"; +-------------------------+-----------------------+ | Variable_name | Value | +-------------------------+-----------------------+ | innodb_version | 5.7.33 | | protocol_version | 10 | | slave_type_conversions | | | tls_version | TLSv1,TLSv1.1,TLSv1.2 | | version | 5.7.33-log | mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | collation_connection | utf8_general_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8_general_ci | +--------------------------+--------------------+ 10 rows in set (0.01 sec)
我將
my.cnf
文件更改為[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
它沒有顯示錯誤,但也沒有儲存表情符號 - 當輸入表情符號時,它顯示為**?**這個問號。
我將
utf-8
編碼轉換為utf8mb4_general_ci
:|--------------------------+--------------------| | character_set_system | utf8 | |--------------------------+--------------------| | collation_connection | utf8mb4_general_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8_general_ci | |--------------------------+--------------------|
為您
SHOW CREATE TABLE
需要表情符號的一張桌子做。它可能在列上顯示“utf8”和/或表的預設值。列必須是utf8mb4
.ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4;
會一味的把所有的列都改成utf8mb4。這可能是您需要的操作。
此外,連接需要指定 utf8mb4。由於我不知道您使用的是什麼客戶端,因此我無法提供具體資訊。如有必要,請在連接後立即執行:
SET NAMES utf8mb4;
術語:
- “字元集”,例如
utf8
或是字元utf8mb4
的編碼。這是您在儲存表情符號時遇到問題的地方。- “collation”是排序,比如’a’ < ‘b’ 是否有大小寫折疊使得’a’ = ‘A’。
WHERE
比較 ( ) 或排序 ( )時,排序規則可能很重要ORDER BY
。