You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Facebook Marketing API插入数据时遭遇Incorrect string value错误求助

解决MySQL插入含特殊Unicode字符时的1366数据错误

你遇到的1366 Incorrect string value错误,原因是待插入的fp_name字段里包含了4字节的Unicode字符(比如截图里的粗体特殊字母,对应错误里的\xF0\x9D\x97\x96这类编码),而MySQL默认的utf8字符集仅支持最多3字节的Unicode字符,无法存储这类字符。以下是几种可行的解决方法:

方法1:修改数据库/字段的字符集为utf8mb4

这是最根本的解决方案,utf8mb4是MySQL对UTF-8的完整实现,支持所有Unicode字符(包括4字节的表情、特殊符号等)。

  • 修改单个字段的字符集:
    ALTER TABLE 你的表名 MODIFY COLUMN fp_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  • 如果需要统一整个表的字符集:
    ALTER TABLE 你的表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    注意:操作前建议备份数据,避免意外。

方法2:确保数据库连接使用utf8mb4编码

用pymysql连接数据库时,必须显式指定charset='utf8mb4',否则即使数据库设置正确,连接传输时也会出现编码不匹配:

import pymysql

conn = pymysql.connect(
    host='你的数据库地址',
    user='用户名',
    password='密码',
    db='数据库名',
    charset='utf8mb4'
)

方法3:过滤或转义特殊字符(可选)

如果暂时无法修改数据库设置,可以预处理字符串,过滤掉4字节Unicode字符(会丢失特殊字符,适合不需要保留这些内容的场景):

import re

def clean_special_chars(s):
    # 移除所有4字节的Unicode字符
    return re.sub(r'[\U00010000-\U0010ffff]', '', s)

# 插入前处理fp_name
cleaned_name = clean_special_chars(原始的fp_name值)

内容的提问来源于stack exchange,提问作者Hikm Nasir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:40:35