Python 3 + Mysql:不正确的字符串值' xF0 x9F x85 x97 xF0 x9F…'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 3 + Mysql:不正确的字符串值' xF0 x9F x85 x97 xF0 x9F…'相关的知识,希望对你有一定的参考价值。
我在堆栈上发现了有关“字符串值不正确”的其他问题/答案,但没有一个答案有效,因此我的情况可能有所不同。
try:
self.cnx = mysql.connector.connect(host='localhost', user='emails', password='***',
database='extractor', raise_on_warnings=True)
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
self.sql = self.cnx.cursor()
biography = str(row[8])
self.sql.execute("""insert into emails (biography)
values(%s)""",
(biography))
其中biography
是utf8mb4_general_ci
TEXT的列:
我假设列 然后,如果这不能解决问题,请在Python中创建MySQL游标后,尝试直接执行以下命令(假设 并且,如果这不起作用,请尝试在Python中创建MySQL连接后立即设置字符集,例如: 如果此时您仍然不走运,我们可以进一步调试:) 更新: 尝试: 请注意, 以上是关于Python 3 + Mysql:不正确的字符串值' xF0 x9F x85 x97 xF0 x9F…'的主要内容,如果未能解决你的问题,请参考以下文章 在 MS Access (VBA) 中使用 ADODB 将非 ASCII 插入 MySQL 数据库时出现“不正确的字符串值”,但重试有效 在 MySQL 中存储 emoji 得到不正确的字符串值错误< Living the
emails.biography
的类型为VARCHAR
,并且表 CHARSET
的emails
为utf8mb4
。如果没有,则要执行: ALTER TABLE `emails` CONVERT TO CHARACTER SET utf8mb4;
self.sql
是您的游标): self.sql.execute('SET NAMES utf8mb4;')
self.sql.execute('SET CHARACTER SET utf8mb4;')
self.sql.execute('SET character_set_connection=utf8mb4;')
self.connection.set_character_set('utf8mb4')
ALTER TABLE `emails` CONVERT TO CHARACTER SET utf8;
ALTER TABLE `emails` CHANGE COLUMN `biography` TEXT CHARACTER SET 'utf8';
utf8mb4_general_ci
是表的排序规则,而不是编码。理想情况下,您应该使用COLLATE utf8_unicode_ci
。