我在 mysql 中创建了一个数据库并使用 webpy 来构建我的 Web 服务器。
但是webpy和mysqldb分别使用它们访问数据库时的行为之间的汉字就很奇怪了。
以下是我的问题:
我的表 t_test(utf8 数据库):
id name
1 测试
“测试”的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])
结果是正常的,它打印:
items=(127L, '\xe6\xb5\x8b\xe8\xaf\x95'), name=测试
但是当我使用 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")
出现中文乱码,打印结果为:
comment code=u'\xe6\xb5\u2039\xe8\xaf\u2022'
comment=忙碌鈥姑€
我知道 webpy 的数据库也是依赖 MySQLdb 的,但是这两种方式有很大的不同。为什么?
BTW,由于上面的原因,我可以直接使用MySQLdb来解决我的汉字乱码问题,但是它丢失了表中的列名——太不雅了。我想知道如何用 webpy 解决它?