mysql与emoji和特殊字符

时间:2025-02-16 21:36:44

从微信登陆已经是非常普遍的登陆方式了,在数据库设计时也应该考虑相关性。一般存储open_id、图标、昵称就够了。其中昵称要特殊注意,否则可能就像这样:

mysql : 1366 Incorrect string value 吧啦吧啦……

这是因为微信的昵称用了特殊字符,比如UNICODE的emoji扩展区。mysql的utf8 default是无法存储的,位数不足。参考:附链接1

对应字段应修改为utf8mb4,存储过程的参数也应该修改(附链接2):

CREATE PROCEDURE `emoji`(text varchar(20) CHARSET utf8mb4)
BEGIN
SELECT text;
END

测试这个问题可以用:

select unhex('F09F8D83')

INSERT tb(`text`) VALUES(unhex('F09F8D83'))

链接1:http://www.cnblogs.com/lampbrotherIT/p/5794742.html

链接2:https://*.com/questions/17650662/creating-a-stored-procedure-with-utf8-strings