python西里尔语解码

时间:2013-04-09 16:32:52

标签: python decode

我正在尝试打印从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。

2 个答案:

答案 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 =真。