gpt4 book ai didi

python - sqlite3.操作错误: Could not decode to UTF-8 column

转载 作者:IT王子 更新时间:2023-10-29 06:27:00 25 4
gpt4 key购买 nike

我有一个包含这行信息的 sqlite 数据库,ù 应该是一个 '-'

sqlite> select * from t_question where rowid=193;
193|SAT1000|having a pointed, sharp qualityùoften used to describe smells|pungent|lethargic|enigmatic|resolute|grievous

当我从 python 读取该行时出现此错误,我做错了什么?

Traceback (most recent call last):
File "foo_error.py", line 8, in <module>
cur.execute(sql_string)
sqlite3.OperationalError: Could not decode to UTF-8 column 'posit' with text 'having a pointed, sharp qualityùoften used to describe smells'

Python 文件:

import sqlite3
conn = sqlite3.connect('sat1000.db')
cur = conn.cursor()
sql_string = 'SELECT * FROM t_question WHERE rowid=193'
cur.execute(sql_string)
conn.close()

最佳答案

text_factory设置为str:

conn = sqlite3.connect('sat1000.db')
conn.text_factory = str

这将 cause cur to return strs而不是自动尝试使用 UTF-8 编解码器解码 str

我找不到任何可以将 'ù' 转换为连字符的解码和编码链,但是有许多可能的 unicode 连字符,例如 u'-', u'\xad', u'\u2010', u'\u2011', u'\u2043 'u'\ufe63'u'\uff0d',我还没有排除这种解码/编码链可能存在。但是,除非您能找到正确的转换,否则最简单的方法可能是简单地使用 str.replace 来修复字符串。

更正:

In [43]: print('ù'.decode('utf-8').encode('cp437').decode('cp1252'))
— # EM DASH u'\u2014'

因此存在可以将 'ù' 转换为某种形式的连字符的解码/编码链。

关于python - sqlite3.操作错误: Could not decode to UTF-8 column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22751363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com