我在mysql中创建一个数据库,并使用webpy构建我的Web服务器.
但是,当webpy和MySQLdb分别使用它们来访问数据库时,中文字符对于它来说是如此奇怪.
以下是我的问题:
我的表t_test(utf8数据库):
id name
1 ??
Run Code Online (Sandbox Code Playgroud)
"测试"的utf8代码是:\ xe6\xb5\x8b\xe8\xaf\x95
当使用MySQLdb做"选择"这样:
c=conn.cursor()
c.execute("SELECT * FROM t_test")
items = c.fetchall()
c.close()
print "items=%s, name=%s"%(eval_items, eval_items[1])
Run Code Online (Sandbox Code Playgroud)
结果是正常的,它打印:
items=(127L, '\xe6\xb5\x8b\xe8\xaf\x95'), name=??
Run Code Online (Sandbox Code Playgroud)
但是当我使用webpy做同样的事情时:
db = web.database(dbn='mysql', host="127.0.0.1",
user='test', pw='test', db='db_test', charset="utf8")
eval_items=db.select('t_test')
comment=eval_items[0].name
print "comment code=%s"%repr(comment)
print "comment=%s"%comment.encode("utf8")
Run Code Online (Sandbox Code Playgroud)
中文出现乱码,打印结果为:
comment code=u'\xe6\xb5\u2039\xe8\xaf\u2022'
comment=??????€
Run Code Online (Sandbox Code Playgroud)
我知道webpy的数据库也依赖于MySQLdb,但对于这两种方式它是如此不同.为什么?
顺便说一句,由于上面的原因,我可以直接使用MySQLdb来解决我的汉字乱码问题,但它丢失了表中的列名 - 它太不合适了.我想知道如何用webpy解决它?