小编eas*_*son的帖子

使用webpy时为什么中文乱码但使用MySQLdb时是正常的?

我在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解决它?

python web.py mysql-python

6
推荐指数
1
解决办法
603
查看次数

标签 统计

mysql-python ×1

python ×1

web.py ×1