【发布时间】:2016-11-24 16:04:14
【问题描述】:
我正在尝试使用 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'
这里我没有得到数据库中存在的数据。
【问题讨论】:
-
请让我们知道,@AnatoliiChmykhalo 也是您身边的蟒蛇大师
-
这是打印它的简单方法:
a = '74 \xd0\xbf\xd0\xbe\xd0\xb3\xd0\xbe\xd0\xb4\xd0\xb0' >>> print a.decode("utf-8") 74 погода -
请指定您使用的 Python 版本。
-
您的示例对于 Python 2 似乎不一致(其中 pymysql 确实会返回一个字节字符串,但没有可以隐式解码然后编码的呈现
??????的字节字符串恢复除问号以外的任何内容)或 Python 3(其中 pymysql 将返回一个 unicode 字符串,如果您的终端严重损坏,它可能会呈现为问号;但随后会显示带有b''前缀的编码字节字符串) .最后你的 UTF-8 编码输出看起来不错。