从 mysql 数据库中检索表情符号

retreive emojii from mysql database

我正在尝试 select 从 Mysql 包含表情符号的 utf8 字符串 而不是表情符号,我得到的是问号

import MySQLdb
db=MySQLdb.connect(host='host', user='user', passwd='password', db='db', charset='utf8mb4', use_unicode=True)
c=db.cursor()
c.execute("SET NAMES UTF8")

c.execute("SELECT message FROM chat WHERE...")
res = c.fetchone()[0]
#the res variable should contain '234абв'. I checked in database explorer

#saving the res into the file to avoid terminal encodeing issues
with open('test.txt','w',encoding='utf-8-sig') as f:
    f.write(res)

#and voila! I'm gettin '?234абв' in the file!!!

我的数据库使用 'utf8mb4' 编码和整理 'utf8mb4_unicode_ci'。 mysql 连接是用 charset='utf8mb4' 选项初始化的。 我做了 运行 'set names utf8'.

我正在使用 python 3.8.5.

我在这里错过了什么?

一如既往,找到解决方案的最佳方式是询问他人。橡皮鸭调试

我发现我应该使用 c.execute("SET NAMES UTF8mb4") 而不是 c.execute("SET NAMES UTF8")