今天测试报错备注的时候,保存了手机上输入法自带的表情
保存的时候提示一下信息:
Incorrect string value: ‘\xF0\x9F\x98\xA3\xF0\x9F...‘ for column ‘xxx‘
在查阅资料以后发现,是因为我使用的mysql数据库的编码的问题,我设计这个xxx字段时候,是设计为utf8。
具体原因:
utf8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。其中Emoji表情是4个字节,而MySql的utf8编码最多3个字节,所以导致了数据插不进去。
所以这里需要把字段修改一下:
ALTER TABLE 表名 CHANGE 列名 列名 VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;