方法一:修改数据库字符集
将数据库中表的字符集改为 utf8mb4 排序规则改为 utf8mb4_general_ci
数据库连接中的字符集也要修改为 utf8mb4:
mysqldb = pymysql.connect(host="x.x.x.x", port=3306, user="user", password="password", database="db", charset="utf8mb4")
参考:
https://blog.csdn.net/weixin_37557729/article/details/107012034
Mysql中 utf8 与 utf8mb4 字符集的区别:
方法二:替换为空字符串
数据添加到数据库时报错,原因是数据中含有emoji表情,将其替换为空字符串即可
import re compile_emoji = re.compile('[' '\U0001F300-\U0001F5FF' # 🌀 --> 🗿 '\U0001F900-\U0001F9FF' # 🤀 --> 🧿 '\U0001F600-\U0001F64F' # 😀 --> 🙏 '\U0001F680-\U0001F6FF' # 🚀-\U0001f6ff '\u2600-\u26FF' # ☀ --> ⛿ '\u2700-\u27BF' # ✀ --> ➿ '\u24C2' # Ⓜ '\U0001F1E6-\U0001F1FF' # 🇦-🇿 '\U0001F170-\U0001F171' # 🅰-🅱 '\U0001F17E-\U0001F17F' # 🅾-🅿 '\U0001F18E' # 🆎 '\U0001F191-\U0001F19A' # 🆑-🆚 # '\u0023' # # # '\u002A' # * # '\u0030-\u0039' # 0 --> 9 '\u2194-\u2199' # ↔ --> ↙ '\u21A9-\u21AA' # ↩ --> ↪ '\u2B05-\u2B07' # ⬅ --> ⬇ '\u2B1B' # ⬛ '\u2B1C' # ⬜ '\u2B50' # ⭐ '\u2B55' # ⭕ '\u2934-\u2935' # ⤴ --> ⤵ '\u3030' # 〰 '\u303D' # 〽 '\u3297' # ㊗ '\u3299' # ㊙ '\U0001F201-\U0001F202' # 🈁 --> 🈂 '\U0001F21A' # 🈚 '\U0001F22F' # 🈯 '\U0001F232-\U0001F23A' # 🈲 --> 🈺 '\U0001F250-\U0001F251' # 🉐 --> 🉑 '\u203C' # ‼ '\u2049' # ⁉ '\u25AA' # ▪ '\u25AB' # ▫ '\u25B6' # ▶ '\u25C0' # ◀ '\u25FB-\u25FE' # ◻ --> ◾ '\u00A9' # © '\u00AE' # ® '\u2122' # ™ '\u2139' # ℹ '\U0001F004' # 🀄 '\U0001F0CF' # 🃏 '\u231A' # ⌚ '\u231B' # ⌛ '\u2328' # ⌨ '\u23CF' # ⏏ '\u23E9-\u23F3' # ⏩ --> ⏳ '\u23F8-\u23FA' # ⏸-⏺ ']', re.UNICODE) ret = compile_emoji.sub('', emoji_value)
参考: