1

我正在尝试打印从 mysql 中选择的西里尔字符。这是我的代码:内容 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: ?????? ?? ????????

请指导我如何正确打印。谢谢。

4

2 回答 2

3

这对我有帮助(从这里得到):

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
于 2015-10-22T19:25:27.163 回答
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=True。

于 2013-04-09T16:36:33.473 回答