环境:python3.2 sqllite3
代码如下:
import sqlite3 as sql
conn = sql.connect(r'c:\setupinfidb.db',detect_types=sql.PARSE_COLNAMES)
c = conn.cursor()
c.execute('select * from setuplog')
for row in c:
print(row)
运行以上代码时,提示:
Traceback (most recent call last):
File "sqlitetest.py",line x,in <module>
c.execute('select * from setuplog')
sqlite3.OperationalError: Could not decode to UTF-8 column 'logtype' with text '\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd'
这个意思是说column ‘logtype’ 不能通过UTF-8 decode,就是logtype不是用utf8编码的 一般情况下这个情况出现在text类型的数据上面 这个可以通过设置 conn.text_factory 解决 如 conn.text_factory = bytes 把text类型当bytes来解释,就不会出错了 不过,这样也不太好,如果知道是什么编码就好了,例子代码是gbk编码的 这里可以这样设置: conn.text_factory = lambda x : str(x,'gbk','ignore') 指示以gbk来解码而不是默认的utf8