mysql插入数据报Incorrect string value: '\\xF0\\x9F\\x8C\\xBC\\xE5\\xB0...' for column错误

这个错误是因为数据库字段的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))

就是把四个字节的字符过滤掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的内容,你遇到的错误是在向MySQL插入数据时出现了编码问题。具体地说,出现了"Incorrect string value"的错误提示,这意味着在插入数据时,某些特殊字符的编码无法被正确处理。 解决这个问题的方法是修改相关字段的编码格式。根据引用提供的解决方案,你可以单独修改"nickname"字段的编码格式,而不需要修改整个表。这种方式无需重启数据库,修改后即可生效。 为了解决这个问题,你需要将原有的字符集(utf8)修改为utf8mb4,并将排序规则修改为utf8mb4_unicode_ci。这两个修改可以确保数据库能够正确处理包含特殊字符的数据。 综上所述,你可以按照以下步骤来解决这个问题: 1. 进入MySQL数据库管理工具。 2. 执行以下SQL语句来修改字段的编码格式和排序规则: ``` ALTER TABLE 表名 MODIFY COLUMN nickname 列类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 这里的"表名"是你需要修改的表的名称,"列类型"是该字段的类型(如VARCHAR)。 3. 执行以上SQL语句后,再次尝试插入数据,应该能够避免"Incorrect string value"的错误。 请注意,你需要根据实际情况修改SQL语句中的表名和列类型。此外,如果还有其他字段出现了相同的错误,你也可以按照相同的方法进行修改。 希望以上信息对你有所帮助。如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值