我正在尝试使用pymysql从python中的mysql db读取条目。数据库中的条目使用区域语言。 例如74погода就是这样一个条目 我写了这样的代码:
import pymysql
conn = pymysql.connect(ip, user, pass, db, charset="utf8")
curr = conn.cursor()
curr.execute("select val from my_table")
r = cur.fetchone()
>>> r
('74 ??????',)
>>> r[0].encode("utf-8").strip()
'74 \xd0\xbf\xd0\xbe\xd0\xb3\xd0\xbe\xd0\xb4\xd0\xb0'
这里我没有得到数据库中存在的数据。
答案 0 :(得分:1)
这是因为MySQLdb通常会尝试将everythin编码为latin-1。这可以通过在您建立连接后立即执行以下命令来解决:
db.set_character_set('utf8')
dbc.execute('SET NAMES utf8;')
dbc.execute('SET CHARACTER SET utf8;')
dbc.execute('SET character_set_connection=utf8;')
db是MySQLdb.connect()的结果,而dbc是`db.cursor()*的结果。