我正在尝试打印从mysql中选择的西里尔字符。这是我的代码: content id DB是cp1251
>>> db = MySQLdb.connect(host="localhost", user="XXX", passwd="XXXX" )
>>> cursor = db.cursor()
>>> cursor.execute("""select id,title,cat,text,tags,date from db1.table1;""")
>>> test=cursor.fetchone()
>>> somevar=test[1]
>>> somevar=somevar.decode('utf8')
>>> print somevar
Result: ?????? ?? ????????
请指导我如何正确打印。 THX。
答案 0 :(得分:3)
这对我有帮助(从here获得):
db = MySQLdb.connect("localhost", config.db_user, config.db_pwd, config.db_name)
# here's the magic
db.set_character_set("utf8")
dbc = db.cursor()
dbc.execute("SET NAMES utf8;")
dbc.execute("SET CHARACTER SET utf8;")
dbc.execute("SET character_set_connection=utf8;")
# and here goes your SELECT for cyrillic fields
dbc.execute("SELECT id, title, cat, text, tags, date FROM db1.table1;")
# and then you just get the results
test = dbc.fetchone()
somevar = test[1]
print somevar
答案 1 :(得分:1)
试试这个:
somevar = somevar.decode('cp1251')
如果这没有帮助,请尝试在MySQLdb.connect中添加charset ='cp1251'参数,并且有use_unicode参数,也许您应该使用它...
您可以在此处找到所有连接参数https://github.com/farcepest/MySQLdb1/blob/master/MySQLdb/connections.py
use_unicode
如果为True,则将类似文本的列作为unicode对象返回 使用连接的字符集。否则,文字样 列以字符串形式返回。列返回为 普通字符串。 Unicode对象将始终被编码为 无论此设置如何,连接的字符集。
charset
如果提供,将更改连接字符集 到这个字符集(MySQL-4.1和更新)。这意味着 use_unicode =真。