问题
富文本中有类似👍🏻这样的字符,插入失败
报错
pymysql.err.DataError: (1366, “Incorrect string value: ‘\xF0\x9F\x91\x8D\xF0\x9F…’ for column ‘post_content’ at row 1”)
解决
要解决这个问题,你可以按照以下步骤进行操作:
- 确保MySQL连接的字符集设置为utf8mb4。你可以在连接MySQL时指定字符集,例如:
connection = pymysql.connect(host=host, user=username, password=psw, database=dbname, charset="utf8mb4", port=port)
- 检查目标表和列的字符集设置。确保表和列都使用了utf8mb4字符集。你可以使用以下命令来修改列的字符集:
ALTER TABLE your_table MODIFY your_column VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 确保应用程序中的字符串也采用了正确的编码。在Python中,字符串通常采用Unicode编码。当向MySQL插入数据时,将字符串编码为UTF-8,然后传递给MySQL连接。
string = "👍"
encoded_string = string.encode("utf-8")