【Flask/MySQL】【编码错误】InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value:

本文介绍了在使用Flask框架和SQLAlchemy向MySQL数据库导入含有emoji等4字节Unicode字符的文章时遇到的问题及解决方案。主要原因是MySQL utf8编码不支持4字节字符,通过将字段编码改为utf8mb4并调整Flask配置可以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在flask框架的集成shell中,使用SQLALchemy向MySQL导入爬虫爬到的中文文章,出现错误:

InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value:。。。

字符串值不正确,文章编码是utf8,数据库字段编码也是utf8,产生错误的原因是字符编码问题。

在MySQL中utf8编码只支持到3字节,有一些4字节的unicode不能正确处理(比如emoji)

解决步骤:

①修改MySQL的字段编码为utf8mb4,就能处理4字节的unicode

使用MySQL-Front修改:

或者使用SQL语句修改:

ALTER TABLE table_name CHANGE col_name col_name type

CHARACTER SET character_name [COLLATE collation_name]; 

②在Flask配置中修改连接MySQL的url

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://用户名:密码@主机号:端口号/数据库名?charset=utf8mb4'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值