Я работаю с существующей базой данных SQLite и испытываю ошибки из-за данных, которые кодируются в CP-1252, когда Python ожидает, что он будет UTF-8.
>>> import sqlite3
>>> conn = sqlite3.connect('dnd.sqlite')
>>> curs = conn.cursor()
>>> result = curs.execute("SELECT * FROM dnd_characterclass WHERE id=802")
Traceback (most recent call last):
File "<input>", line 1, in <module>
OperationalError: Could not decode to UTF-8 column 'short_description_html'
with text ' <p>Over a dozen deities have worshipers who are paladins,
promoting law and good across Faer�n, but it is the Weave itself that
Оскорбительный символ \0xfb
, который декодирует до û
. Другие тексты-нарушители включают "?nd and slay illithids."
, который использует "умные кавычки" \0x93
и \0x94
.
SQLite, python, unicode и не-utf данные подробно описывают, как эта проблема может быть решена при использовании sqlite3
самостоятельно.
Тем не менее, я использую SQLAlchemy. Как я могу обрабатывать закодированные данные CP-1252 в базе данных SQLite, когда я использую SQLAlchemy?
Edit:
Это также применимо к любым другим смешным кодировкам в SQLite TEXT
, например, latin-1
, cp437
и т.д.