在使用MySQL數據庫時,遇到中文字符無法正常保存和顯示的問題,這時需要注意數據庫和表的字符集設置。在MySQL 5.5.3版本及以上,推薦使用utf8mb4字符集,它支持Unicode的所有字符,包括表情符號、中日韓文字等。
CREATE DATABASE your_db_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在創建數據庫時,需要指定字符集為utf8mb4,并且指定排序規則為utf8mb4_unicode_ci(比utf8mb4_general_ci更嚴格)。
CREATE TABLE your_table_name ( id INT(11) NOT NULL AUTO_INCREMENT, content VARCHAR(255) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
在創建表時,也需要指定字符集和排序規則。注意:如果已經存在的表需要更改字符集和排序規則,需要先備份數據,然后對表進行ALTER操作。
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
需要注意的是,使用utf8mb4字符集可能會導致存儲空間增大,因為一個中文字符需要占用4個字節的存儲空間,而不是原來的3個字節。如果需要節省空間,可以考慮將較長的文本字段改為VARCHAR(191)。
ALTER TABLE your_table_name MODIFY content VARCHAR(191) NOT NULL;
在PHP中連接MySQL時,需要指定字符集:
$dbh = new PDO('mysql:host=localhost;dbname=your_db_name;charset=utf8mb4', $user, $pass, $options);
在設置編碼時也需要指定utf8mb4:
mysqli_set_charset($link, 'utf8mb4');
通過以上設置,就可以在MySQL中保存和顯示各種字符,包括表情符號。