mysql与emoji和特殊字符

从微信登陆已经是非常普遍的登陆方式了,在数据库设计时也应该考虑相关性。一般存储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://stackoverflow.com/questions/17650662/creating-a-stored-procedure-with-utf8-strings

posted @ 2018-03-07 20:32  fyter  阅读(428)  评论(0编辑  收藏  举报