MySQL 是一款流行的關(guān)系型數(shù)據(jù)庫,它具有良好的跨平臺性和穩(wěn)定性,但在使用過程中遇到中文亂碼的情況也是十分常見的。
在 MySQL 的打印臺輸出中文亂碼可能會因為多種因素所導(dǎo)致,例如:
1. MySQL 服務(wù)的字符集設(shè)置不正確; 2. 數(shù)據(jù)庫表中的字符集設(shè)置與 MySQL 服務(wù)不一致; 3. 數(shù)據(jù)庫連接的字符集設(shè)置與 MySQL 服務(wù)不一致; 4. MySQL 客戶端的字符集設(shè)置不正確; 5. 數(shù)據(jù)庫備份和還原時字符集設(shè)置不一致。
為了避免中文亂碼的情況,我們可以將 MySQL 的字符集設(shè)置成 utf8mb4。這個字符集是 MySQL 5.5.3 版本引入的,支持存儲 Emoji 表情等特殊字符。
mysql>SHOW VARIABLES LIKE '%character_set%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
上面的代碼可以查看 MySQL 服務(wù)的字符集設(shè)置。
如果 MySQL 數(shù)據(jù)庫表已經(jīng)創(chuàng)建,并且其中的數(shù)據(jù)已經(jīng)包含了中文或特殊字符,需要將表的字符集設(shè)置與 MySQL 服務(wù)一致。
mysql>ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
執(zhí)行上述語句之后,表的字符集就被設(shè)置成了 utf8mb4, 如果表中原有的數(shù)據(jù)還是亂碼,可以使用以下語句進行更新。
mysql>UPDATE table_name SET field_name = CONVERT(CAST(CONVERT(field_name USING gbk) AS BINARY) USING utf8mb4) WHERE 1;
最后,查看 MySQL 客戶端的字符集設(shè)置。
mysql>SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
通過以上設(shè)置,MySQL 打印臺輸出中的中文就不會亂碼了。
上一篇css文字反色
下一篇css文字可以用漸變嗎