这个错误是因为数据库字段的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))
就是把四个字节的字符过滤掉。
博客指出数据库字段charset为utf8时,插入含四个字节单位字符(如emoji表情)会报错。给出两种解决办法:一是修改数据库的character为utf8mb4、collate为utf8mb4_unicode_ci;二是过滤插入数据库的字符串,如用Python过滤掉四个字节的字符。
972

被折叠的 条评论
为什么被折叠?



