SQLite中文数据打开乱码问题

最近遇到一个乱码的问题,在用SQLite Expert打开SQLite数据库时,如果记录中有中文,通常显示乱码,而偶又很想知道这个结乱码的是什么。于是就想到用python读取这些数据是否能显示正常呢?用以下代码进行了测试:

# -*- coding: UTF-8 –*-
import sqlite3

conn=sqlite3.connect('e:\test.db')
with conn:
    curs=conn.cursor()    
    curs.execute("XXX")#XXX为SQL查询语句
    datas=curs.fetchall()
    fout=file('dbout.txt','w')
    for data in datas:
        print data[0],data[1],data[2],data[3]
        fout.write("%s\t%s\t%s\t%s\n" % (str(data[0]),str(data[1]),str(data[2]),str(data[3])))
    fout.close()

结果产生如下异常提示:

OperationalError: Could not decode to UTF-8 column 'name' with text '活载' 

看来可能是编码的问题,而且python肯定能正常读取,于进一点Google之,发现只需要在连接后添加conn.text_factory = str即可正常执行。此语句设置python使用什么类型来处理sqlite3的text类型,默认是unicode,应该是python尝试将中文的text转成unicode时产生了错误。正常的代码段如下:

#...
conn=sqlite3.connect('e:\test.db')
conn.text_factory = str #注意在连接后添加此语句
#...

至于SQLite Expert中如何正常显示,偶没有找到办法,不过不影响使用。