原因在于mysql數(shù)據(jù)庫編碼格式utf8默認(rèn)保存的是1到3個(gè)字節(jié),而emoji表情采用4個(gè)字節(jié)保存,所以拋出異常。因此需要將編碼格式轉(zhuǎn)換為utf8mb4(mysql版本大于5.5)
設(shè)置數(shù)據(jù)庫編碼
// 設(shè)置編碼
SET NAMES utf8mb4;
ALTER DATABASE `database_name` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
查看數(shù)據(jù)庫當(dāng)前編碼狀態(tài)
// 查看編碼狀態(tài)
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
// 查看編碼是否如下所示
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
character_sets_dir /usr/local/mysql/share/charsets/
collation_connection utf8mb4_general_ci
collation_database utf8mb4_general_ci
collation_server utf8mb4_unicode_ci
設(shè)置mysql連接chatset編碼
// 最容易被忽略的步驟:mysql連接組件
var connection = mysql.createConnection({
host : 'host',
user : 'user',
password : 'password',
database : 'database',
charset : 'utf8mb4'
});
原文地址:http://www.fidding.me/article/43
happy coding!