Python3 连接数据库 MySQL8 时报错:(pymysql.err.DataError) (1366, "Incorrect string value: '\\x...
背景:在处理 emoji 时,报错1366,
原因:编码问题
分析及解决方案:
在MySQL8里,字符集默认就是 utf8mb4,已支持emoji
Python3默认就是utf8
原因就出在两个字符集 utf8mb4 和 utf8 上。utf8mb4是utf8的超集,mb4是most bytes 4的意思,专门用来兼容四字节的unicode。
处理emoji时需要字符集支持unicode,utf8mb4是没问题的,但是utf8不行。
只需要将python连接mysql的默认格式由utf8改为utf8mb4就可以了,连接数据库如下:
'mysql+pymysql://root:123456@localhost:3306/test?charset=utf8mb4'
我的笔记