这个错误是因为数据库字段的charset是utf8,但却插入了含有四个字节单位的字符引起的,通常是emoji表情。
解决办法:
1.修改数据库的character为 utf8mb4 并且 collate 为 utf8mb4_unicode_ci 以至支持四个字节的字符
2.普通utf8仅支持3个字节的字符,所以过滤插入数据库中的字符串。Python如下
from functools import reduce
def filter_4bytechar(text):
return reduce(lambda x,y:x+y ,filter(lambda x: len(x.encode('utf8'))<4, text))
#或者 return ''.join(filter(lambda x: len(x.encode('utf8'))<4, text))
就是把四个字节的字符过滤掉。